程序开发中的几个请不要相信
显然,maxlength是不可信的,简单的解决办法是后台代码验证数据长度: string UserName = Request.QueryString["UserName"]; if(!string.IsNullOrEmpty(UserName)&&UserName.length > x){ //...提示错误或截断数据 } 3.不要相信Hidden: 有时候我们想把些信息保存到前台页面,然后再发送回来,但是我们又不想让客户看到这个信息,于是,我们把数据放到了hidden里面,那客户提交数据时,hidden里的内容真的是我们放的内容吗? 这个我一时也没想到好的验证方法,暂时也没有特殊的需求说必须验证。 4.不要相信客户端验证: 比如2和3中的问题,可能有的朋友觉得,我客户端再加个验证不就OK了吗?可是,往往,客户端验证也是不安全的,首先,如果客户端禁用脚本,那客户端验证是完全失效的,另外,在脚本有效的情况下,脚本验证也是可以被篡改的。 以前QQ空间里可以通过这个方法免费使用黄钻模板,不知道现在还有没有。这个就没有什么好的解决办法,只能后台再验证一次。 5.不要相信编辑器: 有的时候,可能项目中要用到一些简单的编辑器,于是,我们就找到了一些编辑器,把不需要的功能(比如:编辑源码、插入图片等)剔除掉,就成了个简单的编辑器,那这样的编辑器还会有什么问题吗? 暂时也没有什么好的解决办法,以前找到过过滤script标签的代码,但似乎不太完美。6.不要相信Cookie: 网站中不可避免的会使用到Cookie,但如果一不注意,小心你的Cookie成了别人的"Cookie",http://img.jb51.net/online/demo0415/Cookie.asp取Cookie和写Cookie的js方法是在网上找到的,具体链接也找不到了。解决办法,似乎是Cookie加密(当然,即使是加密了,也尽量不要把敏感数据放到Cookie中),不知道各位高手还有没有其它好办法。 7.不要相信Request.UrlReferrer: 如果有朋友用这个来验证请求,那么请注意了,这个东西也是不可信的。见代码; System.Net.HttpWebRequest request = System.Net.WebRequest.Create("https://www.jb51.net/") as System.Net.HttpWebRequest; request.Referer = "https://www.jb51.net/"; ... 那么,这个时候你取得的Urlreferrer会是https://www.jb51.net/,但这个请求却是伪造的。 8.不要相信用户: 用户就是你潜在的威胁,客户端的东西,永远都不要轻信。 另,select标签的内容也是不可信的,大家可以动手试试,随便建个页面,里面放个select,然后:欢迎高手不吝赐教。示例代码下载。