แค่นี้ไม่พอหรอกครับ กันได้นิดหน่อย
แต่ถ้าเจอ exploit อื่นที่เข้าไปถึง DB ได้โดยตรง แล้ว query user ได้ ก็จบครับ ^^
แอ๊ดแว๊นซ์ขึ้นไป หน่อย(หน่อยนึงเท่านั้นนะ)
นอกจา real escape string แล้ว ควรจะเข้ารหัส password ด้วยครับ ^^ md5 ทุกวันนี้ก็ไม่ปลอดภัยเพราะมี dictionary เทียบแล้ว
อาจจะเขียนฟังชั่นเข้ารหัสแบบใช้ key ด้วยตัวเอง
ก่อนเก็บ เก็บก็เข้ารหัสก่อน เช่น เขียน ฟังชั่น myEncodePass($str, $key); ไว้ พอ user กรอกรหัสมา ก็เอาไปเข้ารหัสก่อนเก็บลง DB
แล้วเวลา login ใช้ เทียบเอาดีกว่าครับ select user from user where username='abc'; แล้ว if( user['pass'] == myEncodePass($_POST['password'], $key))
จะปลอดภัยกว่านิดนึงครับ
นอกจากเจอ system hack แล้วโจร อ่าน code ได้ ก็ตัวใครตัวมัน ^^
มีแต่คนบอก แฮกผ่าน SQL Injection ตลอด ไม่เคยบอกวิธีป้องกัน
ไม่แน่ใจว่ามาเตือน หรือมาเล่าถึงความน่ากลัวเฉยๆกันแน่
$username = mysql_real_escape_string($_REQUEST["username"]);
$password = mysql_real_escape_string($_REQUEST["password"]);
$lQueryString = "SELECT * FROM accounts WHERE username='".$username."' AND password='".$password."'";