在 php 中,当您处理 GET/POST 请求时,您必须检查它们等。如果参数丢失或错误怎么办?如果它应该是某种黑客,那么你应该怎么做?只是die();
用“dontHackMe”?
问问题
116 次
2 回答
3
不,不要只die()
使用“dontHackMe”。我看到了两个结果:
- 如果用户不是恶意的并且这是一个错误或一个诚实的问题,那么您就没有向用户提供任何求助权。
- 这实际上是一种相当业余的反应,甚至可能会激起真正的攻击者寻找更多安全漏洞。
HTTP 定义了响应的状态码列表。只需选择正确的代码并使用该代码以及某种默认响应页面进行响应。
例如,如果请求在某些方面格式不正确或不正确,则可以使用 400(错误请求)响应代码。响应中的实际页面应该表明这是一个错误的请求,甚至可能为用户提供在需要时寻求帮助的选项(例如指向网站帮助部分的链接或指向联系表的链接) .
这种响应结构的原因有两个:
- 通过提供有用的页面,您可以创建人们可以看到和欣赏的人类可读的输出形式,从而使您的应用程序更加用户友好。
- 通过在您的响应中返回正确的状态代码(您的所有响应,而不仅仅是拒绝潜在的黑客攻击),您可以创建一个机器可读的界面,自动化客户端可以使用该界面更有效地与您的应用程序交互。(例如,一个 400 响应告诉一个非恶意的自动化客户端,它甚至不应该再次提出该请求……该请求已被接收并处理,但被发现是错误的。)
编辑:澄清......这是为了回应真正糟糕的请求。如果表单中提交的数据完全不正确(不符合业务规则,在预期数字的地方使用字母等),那么Michael Hampton 提供了一个完美的建议。本质上,服务器会“装傻”并重新显示表单。
不要向潜在的攻击者提供比他们已有的更多信息。(请记住,错误消息比他们已经拥有的信息更多。)应用程序只会说:“嗯......您尝试提交此表单,但它是错误的。在这里,再试一次。”
于 2012-07-11T08:06:15.830 回答
1
除非 HTTP 标头本身有问题,否则不要发送 HTTP 4xx 响应。
如果您收到来自客户端的无效输入,请重新显示表单,其中无效字段突出显示为无效。
于 2012-07-11T08:08:00.847 回答