正如它在标题中所说的那样,如何判断mysql_real_escape_string是否正在运行而不会等待被黑客攻击?如何判断mysql_real_escape_string是否正常工作
2
A
回答
2
检查你从它得到的值。
发送一些文字,应该逃避,如Ed O'Neil
(应该回来为Ed O''Neil
或Ed O\'Neil
)
1
创建一个单元测试,将它应该逃避所有字符,并检查其输出。
但是: 为什么不简单地在PDO中使用参数化查询? 像:
$dbh = new PDO([...]);
$sth = $dbh->prepare("SELECT foo FROM bar WHERE baz=:baz");
$sth->execute(array(":baz" => $mybaz));
这是最安全的方式,并感谢PDO它几乎和Perl一样容易。
1
要扩大什么'河。 Bemrose'提供,这里有一些示例代码可以做到这一点。一定要用你自己的替换mysql凭据。
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
$user = "Ed O'Neil";
$password = "SQL_INJECTION ';'alter table xyz';";
// Query
$query_safe= sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
// Query
$query_not_safe= sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
$user,
$password);
echo $query_safe."\n";
echo $query_not_safe;
?>
相关问题
- 1. 如何判断OpenShift上的cron作业是否正常工作?
- 2. 如何判断ASP.NET模拟是否正常工作?
- 3. 如何判断NSURLCache是否正常工作?
- 4. 我如何判断ajax是否工作?
- 5. mysql_real_escape_string()无法正常工作?
- 6. 如何判断我的星火工作是否正在进行?
- 7. 如何判断我的端口扫描器是否正常工作?
- 8. 为什么mysql_real_escape_string()不能正常工作?
- 9. 如何判断OpenMP是否在我的C++程序中工作
- 10. 如何判断Proguard是否已完成其工作
- 11. 如何判断Excel工作簿是否受保护
- 12. 如何判断Spark工作是否成功?
- 13. 我正在使用Android模拟器。我如何判断HAXM硬件加速是否正常工作?
- 14. mysql_real_escape_string如何工作
- 15. 如何判断长变量是否为空,或者if()是否包含Java中的异常判断?
- 16. 如何判断soundmanager2是否使用html5?
- 17. 如何判断加载是否有效?
- 18. 如何判断W键是否按下
- 19. 如何判断码头是否冻结?
- 20. 如何判断UITextView是否脏?
- 21. 如何判断AUCTeX是否可用?
- 22. 如何判断UITextField是否为firstResponder
- 23. 如何判断DataRow是否脏
- 24. 如何判断对象是否为空?
- 25. 如何判断MemberInfo是否为内部
- 26. 如何判断NSUserDefaults是否已保存?
- 27. 如何判断GIF是否为动画?
- 28. 如何判断NSManagedObject是否已保存?
- 29. 如何判断AirPlay是否为镜像?
- 30. 如何判断UIPrintInteractionController是否显示?
这会好吗? $ post = $ _GET ['post']; \t \t 如果(is_numeric($交)) \t { \t \t $交= mysql_real_escape_string($交); \t} \t别的 \t { \t \t模具( “淘气NAUGHTY”); \t} \t \t mysql_select_db(“*******”,$ ******); \t \t $ content = mysql_query(“SELECT * FROM tbl _ ***** WHERE Id ='”。$ post。“'”); – 2010-02-18 14:28:51
在我看来,如果is_numeric($ post)为true,$ post不需要转义,因为它已经是一个数字了。不过,仔细检查一下也不会受伤。 – Powerlord 2010-02-18 14:34:13
如果我期望一个数值,我通常只使用“SELECT foo FROM bar WHERE baz =”。 (INT)$ foo的;如果该值不是数字,则返回0,从而导致(通常取决于查询)空结果集,并且其他数字将被除去所有非数字字符(请参阅手册中的整型转换行为)。对于插入/更新,必须进行验证,因为0可能不总是正确。优点是:比转义短得多,并使其他人阅读代码时明白其为数字。关于速度:不确定那里,但我认为它可能比逃跑更快。 – dbemerlin 2010-02-18 15:11:21