我有一个在 HTML5 中创建的小型联系表单,使用“js-webshims”进行客户端验证。此表单通过服务器上的 php 处理。但是,我没有服务器端验证。仅通过 HTML5 进行客户端验证。
我的问题:我只能使用 HTML5 和 'js-webshims' polyfill 进行客户端验证,还是我还需要进行服务器端验证?
谢谢你。
您总是需要进行服务器端验证。
每个人都可以简单地向您的服务器发出 post/get 请求,而无需使用您的表单。
理想情况下,您需要在双方都进行验证。客户端,以便用户知道他们提交的内容是否有效,而服务器端则可以在将其放置在需要去的地方之前对其进行处理。
不过,将其用作经验法则……如果是客户端,则客户端可以在提交之前对其进行更改。
永远不要相信任何来源的输入。始终验证服务器端。
第一条规则:永远不要相信任何数据!
第二:客户端的任何东西都可以简单地被欺骗。
第三:不要相信任何使用诸如absolutley 强制、总是或从不这样的表达方式的规则。(是的,这对第一条规则是平等的,也是对立的)
(请永远不要在生活中盲目遵守规则!!!)
这取决于您需要什么以及您想要实现什么。客户端验证最大限度地减少了真实用户的错误输入,并帮助网站所有者最大限度地减少其数据库中的错误数据。但这并不能阻止程序提交格式错误和/或滥用数据。为了防止 SQL 注入或类似的攻击,您需要某种服务器端验证。但服务器端语法验证也不会阻止用户或程序使用正确的语法提交错误的数据。
因此,如果语法验证是一个安全问题,则需要服务器端验证。
注意:我不是很喜欢我的回答,并赞成 Justin E 的回答。但所有其他答案都有点偏颇。希望其他人能击中钉子。:-D
服务器端验证是绝对强制性的。客户端更多的是为用户提供便利功能/改进的用户体验。
始终使用服务器端验证。前端验证很容易禁用,有人可以在没有您的表单的情况下发送数据以在您的应用程序中获取错误数据(ajax、curl ....)。
前端验证只对可用性有好处。