url查询和安全性

时间:2010-05-01 06:30:19

标签: php security sql-injection

在带有id的url查询中,我使用is_numeric($_GET['id'])来解决安全问题。但是在使用例如类别名称的查询中,urlencode()是一种正确的安全方式吗? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

不,urlencode用于使字符串采用URL编码形式。

与数字ID不同,没有一种方法可以清理字符串输入值。您需要使用哪种方法取决于您要对类别名称执行的操作。

例如:

  • 如果要在查询中使用它,请至少运行mysql_real_escape_string()或(更好)使用支持参数化查询的数据库类(如PDO)。通过参数化查询,PDO将负责安全地清理任何传入的参数。

  • 如果要在页面上输出它,则需要在输出之前运行htmlentities()以防止注入HTML代码。

在将类别名称用作文件名,将其用作URL的一部分等时,还有其他事项要处理。等等。