javascript submit()是否停止了php验证的必要性?
如果我使用javascriptjavascript submit()是否停止了php验证的必要性?,javascript,php,security,validation,submit,Javascript,Php,Security,Validation,Submit,如果我使用javascriptsubmit()方法提交表单,表单将只在启用javascript的情况下发布,但我希望确保这是真的。 所以我的问题是,我是否需要进行php验证,因为这可能是一些我可能不知道的漏洞?这就足够了吗?试着在浏览器中禁用javascript并提交表单。你可以看到javascript验证是否有效,然后你就会明白服务器端验证的必要性 Javascript将在客户端执行,永远不会依赖于客户端。但是php在服务器上执行,不可能在服务器上修改php。但是javascript是。如果您
submit()
方法提交表单,表单将只在启用javascript的情况下发布,但我希望确保这是真的。
所以我的问题是,我是否需要进行php验证,因为这可能是一些我可能不知道的漏洞?这就足够了吗?试着在浏览器中禁用javascript并提交表单。你可以看到javascript验证是否有效,然后你就会明白服务器端验证的必要性 Javascript将在客户端执行,永远不会依赖于客户端。但是php在服务器上执行,不可能在服务器上修改php。但是javascript是。如果您在浏览器上禁用js并进行表单子匹配,那么您可以看到javascript代码都不起作用。但是如果您编写了服务器端验证,那么它就会起作用 另请参考:-
永远不要信任客户端。尝试在浏览器中禁用javascript并提交表单。您可以看到javascript验证是否有效,然后了解服务器端验证的必要性 Javascript将在客户端执行,永远不会依赖于客户端。但是php在服务器上执行,不可能在服务器上修改php。但是javascript是。如果您在浏览器上禁用js并进行表单子匹配,那么您可以看到javascript代码都不起作用。但是如果您编写了服务器端验证,那么它就会起作用 另请参考:-
永远不要信任客户端。始终始终验证后端的任何输入 任何js验证都可以绕过,数据可能会被强制发布 验证输入时,您可能需要:
- 字符串中的转义特殊符号(使用诸如real\u Escape\u string之类的函数)
- 将数据强制转换为其他数据类型
- 执行一些清洁操作(修剪、移除标签等)
- 字符串中的转义特殊符号(使用诸如real\u Escape\u string之类的函数)
- 将数据强制转换为其他数据类型
- 执行一些清洁操作(修剪、移除标签等)
- 一个bookmarklet,它更改表单值,然后进行提交
- 使用curl或类似工具发送HTTP请求
- 发送前使用JavaScript控制台修改值
javascript:(function(){var f=document.forms[0],e=f&&f.elements[0];if(e){e.value="My nefarious value";f.submit();}})();
它将页面第一个表单上的第一个元素的值设置为“我的恶意值”,并提交表单
所以我的问题是,我是否需要进行php验证,因为这可能是一些我可能不知道的漏洞
是的,你知道。你不能盲目相信来自客户的任何东西,它可能是完全被欺骗的
我可以即兴模仿你的描述:
- 一个bookmarklet,它更改表单值,然后进行提交
- 使用curl或类似工具发送HTTP请求
- 发送前使用JavaScript控制台修改值
javascript:(function(){var f=document.forms[0],e=f&&f.elements[0];if(e){e.value="My nefarious value";f.submit();}})();
这将页面第一个表单上的第一个元素的值设置为“我的恶意值”,并提交表单。据我所知,submit()方法提交表单(与单击提交按钮相同)(src w3c),除非您编写一些javascript验证代码,否则它与验证自然无关
现在您必须知道,Javascript只会进行客户端验证。所以,如果在某些浏览器中未启用Javascript会怎么样
因此,进行服务器端验证总是最好的办法。
但这并不意味着我们不应该进行客户端验证:
1:客户端验证减少了服务器的大量负担。
例如,如果用户在表单中填写了错误的输入,他/她将立即得到通知
2:它还使您的web应用程序更具交互性
因此,您应该同时使用客户端和服务器端验证。但决不能只依赖客户端。据我所知,submit()方法提交表单(与单击submit按钮相同)(src w3c),除非您编写一些javascript验证代码,否则它与验证无关
现在您必须知道,Javascript只会进行客户端验证。所以,如果在某些浏览器中未启用Javascript会怎么样
因此,进行服务器端验证总是最好的办法。
但这并不意味着我们不应该进行客户端验证:
1:客户端验证减少了服务器的大量负担。
例如,如果用户在表单中填写了错误的输入,他/她将立即得到通知
2:它还使您的web应用程序更具交互性
因此,您应该同时使用客户端和服务器端验证。但决不能只依赖客户端。您在客户端验证只是为了更方便用户(无需重新加载整个页面)和带宽友好(为无效数据保存客户端-服务器往返)。差不多就是这样 对于应用程序的安全性和数据完整性来说,真正重要的是服务器端验证,所以千万不要跳过它。可以跳过客户端而不发生任何可怕的事情,但决不能跳过服务器端