我知道Javascript可以被用户禁用。
我正在开发一个web应用程序,每当用户提交一个表单(连同客户端验证)一个隐藏的字段是通过使用javascript修改,这是在服务器端检查,看看js是否被用户禁用。如果js被禁用,则会通知用户启用javascript。
- 我需要在服务器端再次验证输入吗?(如果是,为什么?)
- 在这种情况下是否有办法绕过客户端验证? 类似地,在基于ajax的登录的情况下,我们需要再次检查服务器端的用户凭据吗?
永远不要相信任何客户端输入,而应该始终在服务器上进行验证。
客户端验证只是为了方便用户。
我需要在服务器端再次验证输入吗?
是的。。不要偷懒。甚至不能保证请求来自浏览器,更不用说启用了JavaScript的浏览器了。浏览器几乎不是发出HTTP请求的唯一方式,而HTTP服务器——根据定义——服务于HTTP客户机,而不仅仅是浏览器。验证的存在是为了保护您、您的系统、您的宝贵数据以及系统的其他用户。依赖客户端验证假设客户端是合作的、非恶意的,但是验证的整个点是提供保护,防止不合作的或恶意的客户端。
当然在这种情况下是否有办法绕过客户端验证?
。请求可以"手动"构造,以欺骗服务器认为隐藏字段是用JavaScript操纵的方式,从而欺骗服务器认为JS是启用的。隐藏的字段对安全没有任何帮助;
您需要在服务器端再次验证输入。不要相信客户的任何意见。因为他们可以在没有表单的情况下发布任何数据。
客户端验证仅用于UX。