GotoKnow

การเขียน WEB ส่วนของการ LOGIN เข้าสู่ระบบ

สายลมแสงแดด
เขียนเมื่อ 20 เมษายน 2006 11:38 น. ()
แก้ไขเมื่อ 10 มิถุนายน 2012 06:33 น. ()

ส่วนหน้า กรอก User Name กะ Password ผมข้อข้ามไปเลยนะครับ
ตัวแปรหลักที่ใช่ จะมี 2 ตัวแปรคือ $user และ $password

$user=$_POST["user"];
$pasword=md5($_POST["password"]);

วิธีแรกที่จะนำเสนอคือ คือ ตรวจสอบกับ DB ครับ
จะใช้ DB อะไรก็ได้ ผมจะนำเสนอ เฉพาะ SQL Command เท่านั้น

select username from user where user='$user' and password='$password';

เช่น MySQL
$query="select username from user where user='$user' and password='$password';";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
if($row){
echo"Login ถูกต้อง";
}else{
echo"Login ไม่ถูกต้อง";
}

วิธีที่สองใช้ LDAP ตวจสอบ การเขียนโปรแกรมภาษา PHP เชื่อมต่อกับ LDAP SERVER(1)

function ldap_login($ds,$username,$password,$ou,$suffix){
$i=0;
while(1){
$binddn = "uid=$username,ou=".$ou[$i].",".$suffix;
@$ldapbind = ldap_bind($ds, $binddn, $password);
if ($ldapbind){
return true; // Login ถูกต้อง
break;
}else{
if($i==3){
ldap_close($ds);
return false; // Login ไม่ถูกต้อง
break;
}
}
$i++;
}
}

วิธีที่ 3 การใช้ pop3 ในการตรวจสอบ

$pop3_server ="pop3.simple.com";

@$sock=fsockopen('$pop3_server',110);

if(!$sock){
echo "
ติดต่อไม่ได้";
fclose;
exit;
}else{
$repy=fgets($sock,1024);

fputs($sock,"user $mail ");
$repy=fgets($sock,1024);

fputs($sock,"pass $password ");
$repy=fgets($sock,1024);

if ($repy[0]!="+"){

echo"alert('User หรือ Password ผิด กรุณา กรอก User หรือ Password ให้ถูกต้อง');";
fclose;
exit;
}else{
echo"alert('ยินดีต้อนรับ');";
fclose;
}
}

วิธีที่ 4 ใช้ IMAP ตรวจสอบ
if(@imap_open ("{192.168.0.1:143}","$user_name","$passwd")){
echo"ยินดีต้อนรับ";
}else{
echo"User หรือ Password ผิด";
}

 เมื่อดวงใจมีรัก
ดั่งเจ้านกโผบิน
บินไปไกลแสนไกล

หัวใจฉันก็ลอยลิบไป
ถึงแดนดินถิ่นใดนะใจ
โอ้ดวงใจเจ้าเอ๋ย

เมื่อต่างเราก็รัก
จักเกรงกลัวฉันใด
ใจเรานั้นแน่นอน

ขอให้เธอมั่นใจรักจริง
รักเธอจริงแน่ใจขอวอน
ก่อนตัดใจร้างลา

โอ้ ใจ รักเธอ คิดถึงเธอ เฝ้า ครวญหา
โอ้ ใจ นะเออ ไยละเมอ ถึงเธอ ร่ำไป

เมื่อดวงใจมีรัก
มอบแด่ใครซักคน
หมดทุกห้องหัวใจ

ขอให้เธอมั่นใจรักจริง
ฉันจะยอมมอบกายพักพิง
แอบแนบอิงนิรันดร์

โอ้ ใจ รักเธอ คิดถึงเธอ เฝ้า ครวญหา
โอ้ ใจ นะเออ ไยละเมอ ถึงเธอ ร่ำไป

เมื่อดวงใจมีรัก
มอบแด่ใครซักคน
หมดทุกห้องหัวใจ

ขอให้เธอมั่นใจรักจริง
ฉันจะยอมมอบกายพักพิง
แอบแนบอิงนิรันดร์

ขอให้เธอมั่นใจรักจริง
ฉันจะยอมมอบกายพักพิง
แอบแนบอิงนิรันดร์..

คำสำคัญ (Tags): #uncategorized 


ความเห็น

nagarindkx
เขียนเมื่อ

ดีมากเลยครับ
แต่ ... ผมขอแสดงความคิดเห็นเพิ่มเติม ถือว่า รู้ไว้ใช่ว่าก็ได้นะครับ คือ การตรวจสอบ User/Password ด้วยการเก็บในฐานข้อมูลนั้น ก็มีช่องโหว่นะครับ เขาเรียกกันว่า "SQL Injection" คือ เคยโดนมาแล้ว ก็เลยเล่าให้ฟังครับ

$user=$_POST["user"];
$pasword=$_POST["password"];

แล้วสร้างตัวแปร query อย่างนี้

$query="select username from user where user='$user' and password='$password';";

 ลองคิดดู จะเกิดอะไรขึ้นถ้า

$user มีค่าเป็น %' or 1=1" ; //
$password มีค่าเป็น whatever

เมื่อแทนค่าแล้วจะได้ว่า

 $query = "select username from user where user='%' or 1=1" ; //' and password='whatever';";

ผมก็คือ จะคืนค่า true ให้ mysql_query ครับ

เอาเป็นว่า ก่อนจะรับค่าพวกนี้มา ให้ตรวจสอบอย่างให้มีช่องว่าด้วย หรือ พวกอักษรพิเศษพวกนี้ อาจเกิดช่องโหว่ได้ครับ

มี บาง website ที่หนุ่มๆชอบ (อ๊ะ ที่ไหนเหรอ ??? ) ก็ใช้วิธีการแบบนี้เหมือนกัน แต่เข็มงวดมาก ต้องจ่ายเงินสมัครสมาชิกก่อน แต่ทำไงได้อ่ะ อยากดู ก็เลยลอง crack ดู ปรากฏว่าได้ ตอนนี้เขาปิดไปแล้ว อด ฮืออออออๆๆๆ

สายลมแสงแดด
เขียนเมื่อ

ไม่มีการตรวจสอบครับ

เพราะตอน config PHP ได้มีการแก้ปัญหาเรื่องนี้แล้วครับ

ดูได้ที่
http://gotoknow.org

สายลมแสงแดด
เขียนเมื่อ

ไม่มีการตรวจสอบครับ

เพราะตอน config PHP ได้มีการแก้ปัญหาเรื่องนี้แล้วครับ

ดูได้ที่
http://gotoknow.org/linux

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท
ภาษาปิยะธอน (Piyathon)
เขียนโค้ดไพทอนได้ด้วยภาษาไทย