Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 108,668

HOME > PHP > PHP Forum > เเก้ไขรหัสใน MD5 เเล้วเข้ารหัสใหม่ไม่ได้ เกิดจากอะไร ครับ ทำไม MD5 ไม่อ่านค่าต้องเเก้ไขยังไง ครับระบบล๊อคอิน



 

เเก้ไขรหัสใน MD5 เเล้วเข้ารหัสใหม่ไม่ได้ เกิดจากอะไร ครับ ทำไม MD5 ไม่อ่านค่าต้องเเก้ไขยังไง ครับระบบล๊อคอิน

 



Topic : 124513



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์




โค๊ดเช็ค ถ้าผมไปสมัครสมาชิกใหม่ เเล้วเข้าได้ เเต่ถ้าไปเเก้ในsql จะเข้ารหัสผ่านไม่ได้ กรณี ถ้าผมสมัครuser เป็นทั้งaddmin เเละผู้ใช้งาน ต้องทำไงครับ

Code (PHP)
<?php

/*
	Check if a session user id exist or not. If not set redirect
	to login page. If the user session id exist and there's found
	$_GET['logout'] in the query string logout the user
*/
function checkAdminUser()
{
	// ถ้าไม่มีการกำหนดค่า session id ก็จะ Redirect ไปยังหน้า Login อีกครั้ง
	if (!isset($_SESSION['plaincart_user_id'])) {
		header('Location: ' . WEB_ROOT . 'admin/login.php');
		exit;
	}
	
	// ถ้าผู้ใช้ต้องการ logout
	if (isset($_GET['logout'])) {
		doLogout();
	}
}

/*
   admin login
*/
function doLogin()
{
	// ถ้าพบ error ก็จะถูกเซฟลงใน array() ที่ชื่อว่า $errorMessage
	$errorMessage = '';
	
	//รับค่า Username และ Password มาจากแบบฟอร์มล็อกอิน
	$userName = $_POST['txtUserName'];
	$password = $_POST['txtPassword'];
	//เข้ารหัส password ด้วยฟังก์ชัน md5() 
	$hashPassword = md5($password.SECRET_KEY);
	
	// ประการแรกตรวจสอบให้แน่ใจว่า username & password ไม่เป็นอะไรที่ว่างๆ
	if ($userName == '') {
		$errorMessage = 'You must enter your username';
	} else if ($password == '') {
		$errorMessage = 'You must enter the password';
	} else {
		//ตรวจสอบฐานข้อมูลดูว่า username และ password ถูกต้องตรงกันหรือไม่ 
		//และต้องมีฐานะเป็น admin โดยดูจาก user_role= 'admin'
		$sql = "SELECT user_id
		        FROM tbl_user 
				WHERE user_name = '$userName' AND user_password = '$hashPassword' AND user_role = 'admin' ";
		$result = dbQuery($sql);
	
		if (dbNumRows($result) == 1) {
			$row = dbFetchAssoc($result);
			$_SESSION['plaincart_user_id'] = $row['user_id'];
			
			// อัพเดท เวลาล็อคอิน ว่าได้มีการล็อคอินครั้งสุดท้ายเมื่อใด
			$sql = "UPDATE tbl_user 
			        SET user_last_login = NOW() 
					WHERE user_id = '{$row['user_id']}'";
			dbQuery($sql);

			// ถ้าผู้ใช้ที่ล็อคอินในปัจจุปัน ถูกยืนยันชื่อและรหัสผ่านถูกต้อง ก็จะไปยังหน้าถัดไป
			// ถ้าเคยเข้ามามายังส่วนของ Admin แล้ว
			// ให้ไปยังเว็บเพจหน้าสุดท้ายที่เคยเยี่ยมชม
			if (isset($_SESSION['login_return_url'])) {
				header('Location: ' . $_SESSION['login_return_url']);
				exit;
			} else {
				header('Location: index.php');
				exit;
			}
		} else {
			$errorMessage = 'Wrong username or password or don\'t have permission';
		}		
			
	}
	
	return $errorMessage;
}

/*
	Logout a user admin
*/
function doLogout()
{
	if (isset($_SESSION['plaincart_user_id'])) {
		unset($_SESSION['plaincart_user_id']);	//ล้างค่าออกจากตัวแปร $_SESSION
	}
		
	//กลับไปยังหน้าล็อกอินอีกครั้ง	
	header('Location: login.php');
	exit;
}


/*
	Generate combo box options containing the categories we have.
	if $catId is set then that category is selected
*/

function buildCategoryOptions($catId = 0)
{
	//เลือกประเภทสินค้ามาจากฐานข้อมูล
	$sql = "SELECT cat_id, cat_parent_id, cat_name
			FROM tbl_category
			ORDER BY cat_id";
	$result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error());
	
	$categories = array();		//สร้างตัวแปรแบบ array เก็บผลลัพธ์
	while($row = dbFetchArray($result)) {
		list($id, $parentId, $name) = $row;
		
		if ($parentId == 0) {
			//สร้าง array สำหรับกำหนดประเภทสินค้าหลัก
			$categories[$id] = array('name' => $name, 'children' => array());
		} else {
			//ประเภทสินค้าย่อย จะถูกกำหนดลงใน array ของประเภทสินค้าหลัก 
			$categories[$parentId]['children'][] = array('id' => $id, 'name' => $name);	
		}
	}	
	
	//สร้าง Dropdown list เพื่อแสดงรายการประเภทสินค้า
	$list = '';
	foreach ($categories as $key => $value) {	//วนลูปเข้าไปดูในประเภทสินค้าหลัก
		$name     = $value['name'];
		$children = $value['children'];
		
		$list .= "<option value=\"$key\"";
		if ($key == $catId) {
			$list.= " selected";
		}
			
		$list .= ">$name</option>\r\n";

		foreach ($children as $child) {
			$list .= "<option value=\"{$child['id']}\"";
			if ($child['id'] == $catId) {
				$list.= " selected";
			}
			
			$list .= ">&nbsp;&nbsp;{$child['name']}</option>\r\n";
		}
	}
	
	return $list;
}


/*
	Create a thumbnail of $srcFile and save it to $destFile.
	The thumbnail will be $width pixels.
*/
function createThumbnail($srcFile, $destFile, $width, $quality = 75)
{
	$thumbnail = '';
	
	if (file_exists($srcFile)  && isset($destFile))
	{
		$size        = getimagesize($srcFile);
		$w           = number_format($width, 0, ',', '');
		$h           = number_format(($size[1] / $size[0]) * $width, 0, ',', '');
		
		$thumbnail =  copyImage($srcFile, $destFile, $w, $h, $quality);
	}
	
	//หากสร้าง thumbnail สำหรับ ก็จะ return ไฟล์ thumbnail แต่ถ้าไม่สำเร็จ ก็จะ Return ค่าว่าง 
	return basename($thumbnail);
}

/*
	Copy an image to a destination file. The destination
	image size will be $w X $h pixels
*/
function copyImage($srcFile, $destFile, $w, $h, $quality = 75)
{
    $tmpSrc     = pathinfo(strtolower($srcFile));
    $tmpDest    = pathinfo(strtolower($destFile));
    $size       = getimagesize($srcFile);

    if ($tmpDest['extension'] == "gif" || $tmpDest['extension'] == "jpg")
    {
       $destFile  = substr_replace($destFile, 'jpg', -3);
       $dest      = imagecreatetruecolor($w, $h);
       imageantialias($dest, TRUE);
    } elseif ($tmpDest['extension'] == "png") {
       $dest = imagecreatetruecolor($w, $h);
       imageantialias($dest, TRUE);
    } else {
      return false;
    }

    switch($size[2])
    {
       case 1:       //GIF
           $src = imagecreatefromgif($srcFile);
           break;
       case 2:       //JPEG
           $src = imagecreatefromjpeg($srcFile);
           break;
       case 3:       //PNG
           $src = imagecreatefrompng($srcFile);
           break;
       default:
           return false;
           break;
    }

    imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);

    switch($size[2])
    {
       case 1:
       case 2:
           imagejpeg($dest,$destFile, $quality);
           break;
       case 3:
           imagepng($dest,$destFile);
    }
    return $destFile;

}

/*
	Create the paging links
*/
function getPagingNav($sql, $pageNum, $rowsPerPage, $queryString = '')
{
	$result  = mysql_query($sql) or die('Error, query failed. ' . mysql_error());
	$row     = mysql_fetch_array($result, MYSQL_ASSOC);
	$numrows = $row['numrows'];
	
	// how many pages we have when using paging?
	$maxPage = ceil($numrows/$rowsPerPage);
	
	$self = $_SERVER['PHP_SELF'];
	
	// creating 'previous' and 'next' link
	// plus 'first page' and 'last page' link
	
	// print 'previous' link only if we're not
	// on page one
	if ($pageNum > 1)
	{
		$page = $pageNum - 1;
		$prev = " <a href=\"$self?page=$page{$queryString}\">[Prev]</a> ";
	
		$first = " <a href=\"$self?page=1{$queryString}\">[First Page]</a> ";
	}
	else
	{
		$prev  = ' [Prev] ';       // we're on page one, don't enable 'previous' link
		$first = ' [First Page] '; // nor 'first page' link
	}
	
	// print 'next' link only if we're not
	// on the last page
	if ($pageNum < $maxPage)
	{
		$page = $pageNum + 1;
		$next = " <a href=\"$self?page=$page{$queryString}\">[Next]</a> ";
	
		$last = " <a href=\"$self?page=$maxPage{$queryString}{$queryString}\">[Last Page]</a> ";
	}
	else
	{
		$next = ' [Next] ';      // we're on the last page, don't enable 'next' link
		$last = ' [Last Page] '; // nor 'last page' link
	}
	
	// return the page navigation link
	return $first . $prev . " Showing page <strong>$pageNum</strong> of <strong>$maxPage</strong> pages " . $next . $last; 
}
?>




Tag : PHP, MySQL, HTML/CSS, Web Service, Web Hosting







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-09-08 00:35:10 By : ิbosswar View : 1632 Reply : 10
 

 

No. 1



โพสกระทู้ ( 2,234 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

คำตอบอยู่ที่ว่า รหัสผ่านที่คุณนำไปเข้ารหัส คืออะไร?

กรณีที่สร้างรหัสผ่านด้วย php เช่น

$passwd = 12345;
$pass = md5($passwd);
echo $pass;

จากตรงนี้ 12345 ก็จะถูกเข้ารหัสด้วย md5 function

ทีนี้ต้องถามความต้องการ กรณีของคุณคือต้องการให้ระบบทำงานอย่างไรครับ?






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 03:31:33 By : Manussawin
 


 

No. 2



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


sql

อยากให้โค๊ดมันดึงรหัสจากฐานข้อมูลอะครับ เท่าที่อ่านมาเป็นการกำหนดรหัสใน php เเต่ผมก็เขียนโค๊ดตามหนังสือ ตรวจสอบจากฐานข้อมูลนะครับเเต่ทำไมเเก้ไขในฐานข้อมูลเเล้วมันไม่เจอรหัส
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 12:26:03 By : ิbosswar
 

 

No. 3



โพสกระทู้ ( 5,104 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


บรรทัดที่ 34
$hashPassword = md5($password.SECRET_KEY);

มันไม่ใช่แค่ md5 ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 14:47:37 By : apisitp
 


 

No. 4



โพสกระทู้ ( 4,285 )
บทความ ( 8 )



สถานะออฟไลน์


ยังใช้ md5, sha* กับรหัสผ่านอีกเหรอ?
http://security.stackexchange.com/questions/19906/is-md5-considered-insecure

php 5.5+ ก็มีฟังก์ชั่นใหม่ๆเกี่ยวกับ password ให้ใช้แล้วนะ แข็งแกร่งกว่ากันหลายเท่า
http://php.net/manual/en/function.password-hash.php

หรือเก่ากว่า 5.5 ก็มีให้เลือกใช้เยอะแยะ
https://github.com/cosenary/Bcrypt-PHP-Class
https://github.com/ircmaxell/PHP-PasswordLib
หรือหาเอาใน google php password class ซึ่งมันใช้ pbkdf, bcrypt, phpass อะไรพวกนี้ มันก็ล้วนแข็งแกร่งกว่า md5 ทั้งนั้น.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 17:50:07 By : mr.v
 


 

No. 5



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


พึ่งฝึกเขียนอะครับ 5555 md5($password.SECRET_KEY); ใช่ครับ ไม่ได้มีเเค่md5 เเต่มีSECRET_KEY เเล้วถ้าใส่เซตในฐานข้อมูลเราต้องใส่ตัวไหนครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 18:13:29 By : ิbosswar
 


 

No. 6



โพสกระทู้ ( 342 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


มุมมองผม

md5 sha1 ก็ไม่ได้เลวร้ายอะไรครับ

กว่าจะเจอคำที่ให้ค่าตรงกันได้ ก็น่าจะหืดขึ้นเหมือนกัน จนอาจจะหัวขาวแล้วก็เป็นได้ครับ

อยู่ที่ว่าคำที่เอามาเข้ารหัส ง่ายยากยังไงด้วย

ถ้าเอา 1234 มาเข้ารหัส ก็เจอง่ายหน่อย มี db ให้เช็ค มีไฟล์ลิสต์ให้เทียบ

md5(x + y ) เป็นแนวทางที่ดีอีกอย่างนึง แต่ส่วน y หรือ payload ควรซับซ้อนขึ้นอีกหน่อย

แม้จะมีลิ้งค์ให้อ่านจากด้านบน จาก mr.v ก็ใช่ว่าจะเจอได้ง่ายๆ


ก็ยอมรับครับ ว่าผมเองก็หนีไปใช้ bcrypt หรือ hash อื่น เหมือนกัน แต่ก็ไม่ได้ปรามาส md5-sha* ครับ
และก็ยังเชื่อว่า นอกจากไฟล์ลิสต์ หรือ db แล้ว ก็เหลือแค่ brute force ทางเดียว

ข้อที่แย่มากๆสำหรับผมคือ เมื่อเจอแล้ว เรา replace รหัสตัวใหม่ได้ง่าย แค่นั้นเองครับ อันนี้สำหรับผม ถือเป็นจุดบอดเลย
vulnerability exploited ดังลิ้งค์ของ mr.v เป็นรองครับ


คนที่อ่านบทความดังกล่าวเข้าใจ และทำตาม แล้วไปถึงขั้นประยุกต์ใช้ได้ เป็นส่วนน้อยครับ อาจจะน้อยจนนับหัวได้เลย

คิดภาษาคอมพิวเตอร์ใหม่ ยังง่ายกว่าเลย (อันนี้เรื่องจริง)


ย้ำครับ เป็นความเห็นส่วนบุคคล เท่านั้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 20:15:36 By : triplea
 


 

No. 7



โพสกระทู้ ( 4,285 )
บทความ ( 8 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : triplea เมื่อวันที่ 2016-09-08 20:15:36
รายละเอียดของการตอบ ::
http://hashcat.net/hashcat/ เขาใช้ gpu แคร็กเอาเลยครับ ไม่ได้ใช้ dictionary db หาค่าเทียบ แล้วมันทำงานเร็วมาก gpu น่ะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 21:42:00 By : mr.v
 


 

No. 8



โพสกระทู้ ( 342 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ขอบคุณครับ

ผมนึกว่าจะเป็นวิธีที่ถอดรหัสกลับเลย ก็เลยแย้งครับ

เท่าที่ผมอ่าน help
hashcat น่าจะเป็นการเทียบ word list หรือ rules อยู่ แต่ใช้ GPU มาช่วยงาน

ขออภัยครับ ผมอาจจะเข้าใจผิดเอง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-08 23:38:53 By : triplea
 


 

No. 9



โพสกระทู้ ( 7 )
บทความ ( 0 )



สถานะออฟไลน์


ผมอยากรู่ ว่า โค๊ดผมเขียนกำหนดค่า เเบบนี้ใช่มะ เเล้วผมไปเเก้ ในsql เป้นค่าใหม่ ซึ่งโค๊ดรันจากรันเสื้อ มันพาสเวิด ผมจะเอามาศึกษาดัดเเปลงเอง ทีนี้ค่าที่กำหนดอะ มันเข้ารหัส md5 ในsqlกำหนดเเค่ md5 ไม่อ่านค่าพาสเวิดตัวใหม่ เลยอยากรุ้ว่า ถ้ามีคำว่า secret _key เราต้องกำหนดในsqlอะไรเพิ่มอีกไหม


ตอบคำถามผมหน่อยครับ ขอความเห็นใจ อยากได้ความรู้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-09 21:09:02 By : ิbosswar
 


 

No. 10



โพสกระทู้ ( 9,032 )
บทความ ( 2 )



สถานะออฟไลน์


$hashPassword = md5($password.SECRET_KEY);

สีแดงเป็น constant variable ต้องหาให้ได้ว่า มีค่าเป็นอะไร แล้วเอาค่านั้นไปใส่ ใน statement
Code (PHP)
define('SECRET_KEY', 'hash_value'); // หาบันทัดนี้ให้ได้ว่าเก็บไว้ที่ไหน
$password = 'myPass';
$hashPassword = md5($password.SECRET_KEY); 



sql statement
Code (SQL)
update table set fieldpassword =  md5( concat('myPass', 'hash_value'))
where .......

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-09-10 05:20:09 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เเก้ไขรหัสใน MD5 เเล้วเข้ารหัสใหม่ไม่ได้ เกิดจากอะไร ครับ ทำไม MD5 ไม่อ่านค่าต้องเเก้ไขยังไง ครับระบบล๊อคอิน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , pangpond.com , pangpond.co.th , สำนักงานบัญชี.com , รถมือสอง

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2021 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่