Php 我是否需要筛选/清理/验证用于筛选实体的GET变量

Php 我是否需要筛选/清理/验证用于筛选实体的GET变量,php,security,get,Php,Security,Get,我正在构建一种目录形式,其中包含一种对页面上显示的实体进行“过滤”的形式,这与普通网店通常对实体拥有的类别、价格或任何其他属性进行过滤的方式相差不远 考虑到这一点。。。我是否或者应该关心过滤/清理/验证传入的GET变量?我正在使用一个CMS,它将处理(或者至少应该)并确保没有任何讨厌的东西进入数据库 例如,用户可能会将“?fromPrice=1000&toPrice=2000”更改为无效内容,如?fromPrice=xyz&toPrice=2000” 我最初的任务是为此创建一种形式的系统,它将验

我正在构建一种目录形式,其中包含一种对页面上显示的实体进行“过滤”的形式,这与普通网店通常对实体拥有的类别、价格或任何其他属性进行过滤的方式相差不远

考虑到这一点。。。我是否或者应该关心过滤/清理/验证传入的GET变量?我正在使用一个CMS,它将处理(或者至少应该)并确保没有任何讨厌的东西进入数据库

例如,用户可能会将“?fromPrice=1000&toPrice=2000”更改为无效内容,如?fromPrice=xyz&toPrice=2000”

我最初的任务是为此创建一种形式的系统,它将验证值并返回到默认值,但我很难理解这样做的意义


这样做是否会带来任何安全点、异常预防或其他问题,或者这只是浪费时间?

官方解决方案是使用php的消毒:

但是,如果只是从/到价格,您应该检查它们是否大于零。对于您的示例,这应该可以做到,如果验证失败,则加载默认值


请参阅以供参考

我的简短回答是“是”。以您的示例为例,如果价格应该是数字,那么检查以确保它们实际上是数字,而不是xyz,这将是明智的做法。这同样适用于可能传递的、预期属于某一类型的任何其他内容。我同意您对事物语义的看法,但有什么“实际的”吗“这样做的原因不仅仅是基于意见?用户通过URL或表单输入的任何信息都应该在使用之前进行检查和验证。这不是意见,而是事实。任何可能被用户改变的东西都应该被考虑到污染/坏/坏直到/除非通过验证而得到证实。>五个最常见的网站攻击——SQL注入、跨站点脚本(XSS)和远程文件包含(RFI)——共有一个共同的根本原因:输入消毒。或者更准确地说,是缺少。谢谢你的回答,但问题不是怎么做,而是如果。