在带有id的url查询中,我使用is_numeric($_GET['id'])
来解决安全问题。但是在使用例如类别名称的查询中,urlencode()
是一种正确的安全方式吗?
提前谢谢。
答案 0 :(得分:2)
不,urlencode
用于使字符串采用URL编码形式。
与数字ID不同,没有一种方法可以清理字符串输入值。您需要使用哪种方法取决于您要对类别名称执行的操作。
例如:
如果要在查询中使用它,请至少运行mysql_real_escape_string()
或(更好)使用支持参数化查询的数据库类(如PDO)。通过参数化查询,PDO将负责安全地清理任何传入的参数。
如果要在页面上输出它,则需要在输出之前运行htmlentities()
以防止注入HTML代码。
在将类别名称用作文件名,将其用作URL的一部分等时,还有其他事项要处理。等等。