SQL注入帮助

时间:2011-08-27 12:38:39

标签: php mysql sql-injection

所以我只是测试了mysql_real_escape();函数,它的作用是在\之前放置"。当内容回显到页面上时,我会在任何\'之前获得" s的内容。所以,假设我发布了"""""""""""""""""""""""""""",我得到的是\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"回复。

是否有一些代码可以在\回显到页面时将其删除?

4 个答案:

答案 0 :(得分:5)

通过添加这些斜杠,mysql_real_escape_string只是将字符串转换为数据库的输入格式。当数据从数据库中出来时,它应该没有任何斜杠。您不应该自己删除它们。

像其他人一样使用stripslashes建议在大多数情况下会与mysql_real_escape_string相反,但不是全部,而且你不应该为此目的而依赖它。请注意,如果您发现自己需要使用它,那么您已经做了其他错误。

答案 1 :(得分:2)

你不需要unescape,即。删除斜杠 - 它们不会插入数据库。它们仅用于将数据传递给MySQL,它们不会写入数据库。当您SELECT数据时,您将看不到斜杠。

答案 2 :(得分:1)

你知道mysql_real_escape()的工作原理吗?提示:它允许为SQL使用编码字符串。例如mysql_query('SELECT * FROM users WHERE name="'.mysql_real_escape_string($name).'"');。它可用于插入不会转义引号的字符串,例如" or 1=1 -- "制作SELECT * FROM users WHERE name="" or 1=1。您必须在之前>插入数据库时​​激活它。

当您读取此数据时,斜杠将不会以任何方式存在。

实际上,看看下面的内容,我会做出这个答案,而不是评论......

答案 3 :(得分:0)