url查询与安全
在带有 id 的 url 查询中,我使用 is_numeric($_GET['id'])
来解决安全问题。但是在查询例如类别名称时,urlencode()
是安全的正确方法吗? 提前致谢。
In url query with id I use is_numeric($_GET['id'])
for security issues. But in query with for example category name, is urlencode()
a right way for security?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,
urlencode
用于使字符串采用 URL 编码形式。与数字 ID 不同,没有一种方法可以清理字符串输入值。您需要使用什么方法取决于您想要对类别名称执行什么操作。
例如:
如果您想在查询中使用它,请至少对其运行
mysql_real_escape_string()
或(更好)使用支持参数化查询的数据库类(如 PDO)。对于参数化查询,PDO 将负责安全地清理任何传入参数。如果想输出到页面上,需要在输出前运行
htmlentities()
,以防止HTML代码注入。当使用类别名称作为文件名、将其用作 URL 的一部分等等时,还有其他事情需要注意。
No,
urlencode
is used to make strings take URL encoded form.Unlike with a numeric ID, there is no one single method of sanitizing a string input value. What method you need to use depends on what you want to do with the category name.
For example:
If you want to use it in a query, run at least a
mysql_real_escape_string()
on it or (better) use a database class that supports parametrized queries (like PDO). With parametrized queries, PDO will take care of securely sanitizing any incoming parameters.If you want to output it on a page, you need to run
htmlentities()
on it before outputting to prevent injection of HTML code.there are other things to take care of when using the category name as a file name, when using it as part of an URL and so on and so on.