我最近一直在阅读PHP,由于显而易见的原因,验证用户输入是一个常见的主题。我并没有真正进入黑客行为,或做任何恶意的事情,但出于好奇,我不明白恶意用户如何能够更改POST信息。澄清一下,这是我正在阅读的书中的摘录:
如果用户可以进入他或她的州 自由形式,然后你暴露 你自己得到像
这样的状态
- New Yrok(Typo)
- Lalala(故意模糊)
用于解决此问题的常用策略 是使用下拉选项框来 为用户提供州的选择。这个 但是只解决了一半的问题: 你已经阻止了人们 意外输入不正确 州,但它没有提供保护 来自某人恶意改变 他们的POST数据传入了 不存在的选项。 - “George Schlossnagle的高级PHP编程”
如何做到这一点,我明白为什么要阻止这一点,但我的逻辑似乎是向后防止我不完全理解的东西。
由于
答案 0 :(得分:3)
您不能假设processtheform.php只会从yourform.html获取发布的数据。如果他们在自己的系统(或其他任何地方)上创建自己的html表单,他们可以使用它来发布到您的processtform.php代码。
如果processtheform.php说出了隐藏在表单中的用户名(电子邮件地址)并用它向该人发送电子邮件,则黑客可能会更改该信息并让您的程序向人们发送垃圾邮件。
基本上,您不能依赖yourform.html上的前端脚本来确保数据是干净的并按原样发送。 processtheform.php需要检查并清理数据,即使您的前端代码已经执行了。
前端清洁的唯一优势是它使用户保持在同一页面并允许他在提交前输入正确的数据 - 如果在前端未完成,用户可能需要重新输入他的所有信息