【发布时间】:2018-06-09 16:58:36
【问题描述】:
我正在构建一种目录形式,它具有对页面上显示的实体进行“过滤”的形式,与普通网上商店通常过滤类别、价格或任何其他属性的方式相差无几实体拥有。
考虑到这一点...我是否应该关心过滤/清理/验证传入的 GET 变量?我使用的 CMS 可以处理(或至少应该)并确保没有任何讨厌的东西进入数据库。
例如,我是否应该关心用户可能会将“?fromPrice=1000&toPrice=2000”更改为无效的内容,例如 ?fromPrice=xyz&toPrice=2000”。
我最初的任务是为此创建一种系统形式,它将验证值并回退到默认值,但我很难看到这样做的意义。
这样做是否会带来任何安全点、异常预防或其他任何东西,或者这只是浪费时间?
【问题讨论】:
-
简短的回答是 IMO。使用您的示例,如果价格应该是数字,那么检查以确保它们实际上是数字而不是 xyz 将是明智的做法。这同样适用于可能传递的任何其他预期为某种类型的东西。
-
我同意你对事物语义的看法,但这样做背后是否有任何“实际”推理,而不仅仅是基于意见?
-
任何来自用户的输入(通过 URL 或表单)都应该在对其进行任何操作之前进行检查和验证。这不是观点,这是事实。任何可能被用户更改的东西都应该被认为是受污染的/坏的/邪恶的,直到/除非通过验证证明不是这样。
-
> 最常见的五种网站攻击中的三种——SQL 注入、跨站点脚本 (XSS) 和远程文件包含 (RFI)——有一个共同的根本原因:输入清理。或者更准确地说,缺乏。esecurityplanet.com/browser-security/…