-2

我想知道表单字段验证。我一直在通过客户端脚本(如 JavaScript)和 PHP 进行验证。如果用户关闭 JavaScript,客户端验证当然不会工作。那么为什么我们同时进行服务器和客户端验证。我的意思是不是服务器端验证就足够了,而不是使用客户端验证。

我相信,正则表达式用于过滤用户可能意外或自行选择输入的垃圾或无效数据格式。例如,电子邮件地址的输入字段,但用户输入了 1233456。所以,它是一个垃圾。在与数据库交互之前,应验证数据。

在与数据库交互之前,我可以使用模型视图控制器设计模式在控制器内进行此类验证吗?这会是一个好习惯吗?

如果我错了,请指导我并纠正我。谢谢

4

5 回答 5

2

不,这还不够。提交表单后,您应该始终在服务器端验证您的数据。提交表单之前的客户端验证和 AJAX 验证只会通过对无效数据提供更快的反馈来增强用户体验。客户端验证和 AJAX 提交前验证都不会也不能保护您免受恶意制作的表单提交。攻击者和滥用者通常甚至不使用浏览器来向您的服务器提交数据。

于 2013-10-25T10:07:11.167 回答
0

使用 javascript 纯粹是帮助用户的一种方式。这是用户友好的,因为在用户提交数据之前它已经过验证。由于可能禁用 javascript,因此应始终进行服务器端验证,因此服务器端验证纯粹是安全性和输入校对。

因此,您可以将 javascript 验证排除在您的应用程序之外,但如果您不这样做,它确实会使您的应用程序更容易使用。

如果您不喜欢 javascript,您也可以使用 HTML5 验证器,例如使用“必需”属性:http ://www.the-art-of-web.com/html/html5-form-validation/ ,但就像javascript 它不确保发生验证,因此始终需要服务器端验证!

于 2013-10-25T10:04:57.300 回答
0

客户端验证是为了缓解用户体验,给他一些反馈,输入工具提示等等。我总是做服务器端,然后添加 ajax,这样页面不会重新加载,用户会得到快速反馈。如果 JS 被关闭,服务器端仍然可以工作而无需再次接触代码。

于 2013-10-25T10:05:08.607 回答
0

你说的对。主要验证必须在服务器代码中,在您的数据库查询之前。也可以在客户端进行正确验证,以便验证更快并且不发送服务器请求。

于 2013-10-25T10:05:28.633 回答
0

是的,完全正确双方都有好处:

服务器端验证:始终必须存在,客户端很容易被破坏,并且您不希望数据库中有不良数据。

客户端验证:是可选的,但很好。主要用于不接收客户端到服务器的不必要请求。客户爱不提要求,服务不压力。

对于客户端验证,最好的插件是http://jqueryvalidation.org/工作正常,文档不完整,但有一个很好的社区使用。

对于服务器端验证,取决于您使用 Symfony 2 的框架,在组件中进行表单验证

于 2013-10-25T10:07:58.507 回答