客户端验证不能代替服务器端验证
用户可以直接向服务器发Http请求(比如直接在地址栏中构造请求数据,绕过客户端浏览器检查来干坏事。
客户端校验是为了很好的客户端体验,服务器端校验是最后一次把关,防止恶意请求。
一个都不能少。 jQuery Validator+服务器端校验是不错的开发模式。
记住数据可以改哦
客户端藏起来、不显示也不一定安全。不要轻信用户提交上来的数据:
比如控制有的数据能删除、有的数据不能删除,如果只是隐藏不能被删除的数据,
而把id作为删除参数传递,就可能有问题。
Http报文的UserAgent、Referer、Cookie等都是可以造假的,
不要相信这些可能会造假的数据。
ValidateRequest
ASP.NET4.0之后会对ashx检测中默认对请求的数据进行了校验,
如果数据中有<、>等有潜在XSS供给的字符,则会报错。对于一些
CMS系统等确实需要提交HTML内容的地方要关闭它,修改web.config,
在<system.web>节点中接入<httpRuntime requestValidationMode="2.0" />
把验证变更为2.0模式。(*.aspx在页面顶部的Page中还要加入
ValidateRequest="false")
这样的功能只能开放给网站编辑、系统管理员等可信的人,对于普通网友不能开放。为什么?
什么是XSS,(跨站脚本,Cross-site scripting)。
用户可以直接向服务器发Http请求(比如直接在地址栏中构造请求数据,绕过客户端浏览器检查来干坏事。
客户端校验是为了很好的客户端体验,服务器端校验是最后一次把关,防止恶意请求。
一个都不能少。 jQuery Validator+服务器端校验是不错的开发模式。
记住数据可以改哦
客户端藏起来、不显示也不一定安全。不要轻信用户提交上来的数据:
比如控制有的数据能删除、有的数据不能删除,如果只是隐藏不能被删除的数据,
而把id作为删除参数传递,就可能有问题。
Http报文的UserAgent、Referer、Cookie等都是可以造假的,
不要相信这些可能会造假的数据。
ValidateRequest
ASP.NET4.0之后会对ashx检测中默认对请求的数据进行了校验,
如果数据中有<、>等有潜在XSS供给的字符,则会报错。对于一些
CMS系统等确实需要提交HTML内容的地方要关闭它,修改web.config,
在<system.web>节点中接入<httpRuntime requestValidationMode="2.0" />
把验证变更为2.0模式。(*.aspx在页面顶部的Page中还要加入
ValidateRequest="false")
这样的功能只能开放给网站编辑、系统管理员等可信的人,对于普通网友不能开放。为什么?
什么是XSS,(跨站脚本,Cross-site scripting)。
CKEditor和UEditor(百度)等很多编辑样式的第三方控件。
摘自:传智播客视频教材