我想知道有什么方法可以防止 HTML 表单元素在提交之前在客户端发生变化(它们具有值(value)的元素,如隐藏元素)?
假设我有隐藏元素。我想确保它们的值没有被用户故意更改。
或者什么是 HTML FORM 安全最佳实践?
最佳答案
不,没有办法阻止客户端向您发送任意操纵或格式错误的请求。这不仅适用于 Web 应用程序,也适用于您无法实际控制客户端的任何应用程序。
最佳做法是预料到并处理它。这样做的具体机制包括:
- 将数据保存在服务器端 session 变量中,而不是使用隐藏字段
- 或者,使用加密哈希总和(包括盐和客户端的 IP 地址)来确保数据未被篡改
- 通过在使用前去除潜在的 SQL 注入(inject)或 XSS 攻击的函数运行所有客户端提供的数据
- 检查每个页面上的用户授权(这样人们就无法通过更改“编辑个人资料”页面上的 id 参数来查看/操纵其他用户的数据)
关于security - 在提交之前,如何确保 HTML 表单的元素没有被更改以在客户端进行黑客攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281544/