我想知道表单字段验证。我一直在通过JavaScript和PHP等客户端脚本进行验证。如果用户关闭JavaScript,则客户端验证将无法正常工作。那么我们为什么要同时进行服务器和客户端验证。我的意思是服务器端验证不够,而不是使用客户端验证。
我相信,正则表达式用于过滤用户可能意外或由他选择输入的垃圾或无效数据格式。例如,电子邮件地址的输入字段,但用户输入了1233456。所以,它是垃圾。在与数据库交互之前,应验证数据。
在与数据库交互之前,我是否可以使用模型视图控制器设计模式在控制器内进行这些验证。这是一个好习惯吗?
如果我错了,请指导我,让我纠正。谢谢
答案 0 :(得分:2)
不,这还不够。表单提交后,您应该始终在服务器端验证您的数据。提交表单之前的客户端验证和AJAX验证只是通过提供有关无效数据的更快反馈来增强用户体验。客户端验证和AJAX预提交验证都不能也不能保护您免受恶意制作的表单提交。攻击者和滥用者通常甚至不使用浏览器来向您的服务器提交数据。
答案 1 :(得分:0)
使用javascript纯粹是一种帮助用户的方式。这是用户友好性,因为在用户提交数据之前,它是经过验证的。 由于javascript可能被禁用,因此应始终完成服务器端验证,因此服务器端验证纯粹是安全性和输入校对。
因此,您可以将javascript验证保留在应用程序之外,但如果不这样做,它确实可以更轻松地使用您的应用程序。
如果你不喜欢javascript,你也可以使用HTML5验证器,比如使用“required”属性:http://www.the-art-of-web.com/html/html5-form-validation/,但就像javascript它不能确保验证一样,因此总是需要服务器端验证!
答案 2 :(得分:0)
客户端验证是为了减轻用户体验,给他一些反馈,输入工具提示等等。我总是做服务器端,而不是添加ajax,因此页面不会重新加载,用户可以获得快速反馈。如果关闭JS,服务器端仍然可以在不再触摸代码的情况下工作。
答案 3 :(得分:0)
你是对的。在数据库查询之前,主要验证必须位于服务器代码中。也将在客户端进行正确验证,以便验证更快并且不发送服务器请求。
答案 4 :(得分:0)
是的,完全正确双方都有好处:
服务器端验证:始终必须存在,客户端易于破解,并且您不希望数据库中存在错误数据。
客户端验证:是可选的,但很好。主要用于不接收客户端到服务器的不必要请求。客户喜欢不提出要求,并且不会有压力。
对于客户端验证,最好的插件http://jqueryvalidation.org/工作正常,文档不完整,但有一个很好的社区使用。
对于服务器端验证,取决于您使用Symfony 2的框架,在组件中进行表单验证