【问题标题】:HTML5: Do I need to validate a webform with both client-side AND server-side or can I just do client-side?HTML5:我是否需要同时使用客户端和服务器端验证 Web 表单,或者我可以只在客户端进行验证吗?
【发布时间】:2014-01-29 22:27:58
【问题描述】:

我有一个在 HTML5 中创建的小型联系表单,使用“js-webshims”进行客户端验证。此表单通过服务器上的 php 处理。但是,我没有服务器端验证。仅通过 HTML5 进行客户端验证。

我的问题:我可以只使用 HTML5 和 'js-webshims' polyfill 进行客户端验证,还是我还需要进行服务器端验证?

谢谢。

【问题讨论】:

  • 我忘了提到该表单将驻留在安全且封闭的网络/内联网上。我想使用服务器端验证仍然很重要?
  • 当然,您永远不知道谁可能在输入不同的内容。作为一名系统管理员,我知道我在一个“安全”环境中有一群用户,他们输入随机的东西试图获得管理员访问权限。任何类型的安全性面临的最大威胁是内部威胁。
  • 嘿@redshift 这是个好问题

标签: php html webshim


【解决方案1】:

总是需要进行服务器端验证。

每个人都可以简单地向您的服务器发出 post/get 请求,而无需使用您的表单。

【讨论】:

    【解决方案2】:

    理想情况下,您需要在双方都进行验证。客户端让用户知道他们提交的内容是否有效,而服务器端则让您可以在将其放置到需要去的地方之前对其进行处理。

    不过,将此作为经验法则...如果是客户端,客户端可以在提交之前更改它。

    【讨论】:

      【解决方案3】:

      永远不要相信来自任何来源的输入。始终验证服务器端。

      【讨论】:

      • 感谢所有来投票的人。您正在为社区提供出色的服务。 /讽刺
      • 看起来反对票已全部回滚。 (Stack Exchange 很擅长挑选不合理的投票模式)
      【解决方案4】:

      第一条规则: 永远不要相信任何数据!

      第二: 客户端上的任何东西都可以简单地被欺骗。

      第三: 不要相信任何使用 absolutley 强制alwaysnever 等表达方式的规则。 (是的,这对第一条规则既是平等的又是对立的)

      (请永远不要在生活中盲目遵守规则!!!)

      这取决于您需要什么以及您想要实现什么。客户端验证最大限度地减少了真实用户的错误输入,并帮助网站所有者最大限度地减少其数据库中的错误数据。但这并不能阻止程序提交格式错误和/或滥用数据。为了防止 SQL 注入或类似攻击,您需要某种服务器端验证。但服务器端语法验证也不会阻止用户或程序使用正确的语法提交错误的数据。

      因此,如果语法验证是一个安全问题,则需要服务器端验证。

      注意:我不是很喜欢我的回答,并赞成 Justin E 的回答。但所有其他答案都有点偏颇。希望别人能打中钉子。 :-D

      【讨论】:

        【解决方案5】:

        服务器端验证是绝对强制性的。客户端更多的是为用户提供便利功能/改进的用户体验。

        【讨论】:

          【解决方案6】:

          始终使用服务器端验证。前端验证很容易禁用,并且有人可以在没有您的表单的情况下发送数据以在您的应用程序中获取错误数据(ajax、curl....)。

          前端验证只对可用性有好处。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-17
            • 2017-09-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多