【发布时间】:2011-05-21 07:05:12
【问题描述】:
我意识到恶意用户可以在提交表单之前在浏览器中修改表单的 html。 例如,切换两个相同类型的输入字段的名称。
我正在创建一个很大程度上依赖于数据库中每个条目之间关系的网站。
如果发生这种情况,可能会危及我网站的所有功能。 (我已经测试过了,它确实切换了用户在浏览器中切换名称的两个字段的输入,即我)
我们如何防止这种情况发生?
【问题讨论】:
我意识到恶意用户可以在提交表单之前在浏览器中修改表单的 html。 例如,切换两个相同类型的输入字段的名称。
我正在创建一个很大程度上依赖于数据库中每个条目之间关系的网站。
如果发生这种情况,可能会危及我网站的所有功能。 (我已经测试过了,它确实切换了用户在浏览器中切换名称的两个字段的输入,即我)
我们如何防止这种情况发生?
【问题讨论】:
如果这种 hack 导致服务器端出现问题,您无法在浏览器代码中修复它。这意味着您需要在服务器上解决此问题。
任何人都可以向您的服务器生成任何类型的 POST 或 GET,您需要为此做好准备。
因此,请确保您在服务器上检测到这种篡改,并在那里通过返回错误消息或默默地忽略此类无效请求来处理它。
如果服务器为此做好了准备,您可以让人们在他们的浏览器中随意入侵。
【讨论】:
您应该验证您在PHP Manual for Validation 上看到的输入。例如,我们有表单输入 title 和 body 用于帖子。当用户提交帖子时,title 应该在 1 到 40 个字符之间,所以我们应该通过 PHP 进行验证。其次,body 不应包含恶意文本或代码,因此我们应该使用诸如addslahes() 之类的功能对其进行清理。
整个主题都围绕着 PHP 安全。防止黑客攻击和恶意意图的唯一方法是学习安全性。通过上面的链接开始学习。
【讨论】:
addslashes 对任何事情都没有多大帮助。
addslashes 是个坏例子,因为它只会给你一种虚假的安全感。
据我所知,最简单且通常最好的解决方案是在将查询发送到数据库之前使用 php 检查每个输入字段是否具有有效值。例如,名称为“电话”的字段只能是数字,不能超过 10 个密码。让规则足够严格,你不应该有任何问题。此外,您还应该确保您的数据库字段是严格的,即。只允许你想要的长度和数据类型。
【讨论】: