我只有两个字段:用户名和电子邮件。验证规则很简单:根据正则表达式命名1-255个字符和email;这两个字段都是必需的。所有这些都可以在纯 HTML 中实现:两个字段,第二个是 type email,并且都带有 attribute required。即使禁用了 JavaScript,HTML 本身也不允许发送空数据或无效数据。
然而,是否有必要在服务器端验证数据(我用 Laravel 编写)。写下所有这些规则对我来说并不难,但是如果 HTML 不允许我发送空数据或无效数据,我该如何测试呢?
后端编程的主要规则是永远不要信任客户端!
忘记客户端上有某种验证。它不是为您制作的,它是为用户制作的。
攻击者可以随时按 F12 并根据需要修复您的表单,将所有验证都删除:
高级黑客知道 wget 和 curl,它们允许您发送任何请求,而无需在浏览器中访问该站点。
最后,您甚至可以将表单拖到 Internet 上的单独站点,从而允许任何非专业人士输入任何数据。
当然,这是必要的,因为没有人禁止通过浏览器控制台更改页面上的所有 html 代码,包括
required从任何表单字段中删除它或者更糟糕的是,例如,如果您在页面上有 ajax,并且用户看到了请求发送到的地址,他可以使用控制台中的一个简单功能开始向服务器发送垃圾邮件请求