JD *_*cks 1 php security sql-injection
可能重复:
在PHP中停止SQL注入的最佳方法
我已经看到一些使用称为PDO的东西来使sql-infection或其他使用real_escape的查询安全的例子,但它们似乎都是不完整的或承担一些知识.所以我问,采取这个简单的更新查询,并使其从sql-injection安全.
function updateUserName($id,$first,$last)
{
$qry = 'UPDATE user SET first = "'.$first.'", last = "'.$last.'" WHERE id = '.$id;
mysql_query($qry) or die(mysql_error());
}
Run Code Online (Sandbox Code Playgroud)
基本上,你必须:
mysql_real_escape_string
intval
.在您的具体情况下,这将是这样的:
$qry = 'UPDATE user SET first = "'
. mysql_real_escape_string($first)
. ' ", last = "'
. mysql_real_escape_string($last)
. '" WHERE id = '
. intval($id);
Run Code Online (Sandbox Code Playgroud)
当然,这是考虑到last
并且first
是varchar,这id
是一个整数.
作为旁注:当出现SQL错误(对于任何类型的错误也是如此)时,您不应该显示技术错误消息并让脚本死掉.
您的用户将无法理解该技术错误消息 - 他们不知道如何处理它,这不是他们的问题.
相反,您应该记录(例如,文件)技术错误消息,供您自己使用; 并向用户显示一个很好的"oops an error occurred"页面.
归档时间: |
|
查看次数: |
1719 次 |
最近记录: |