程序开发中的几个请不要相信
网络编程 2021-07-05 12:59www.168986.cn编程入门
虽不算什么高深的东西,但至少也算一点点小经验,分享分享吧,如果您是高手,而且您还有点时间,那么请你耐心看完整篇文章,然后再帮忙指点指点,留下您的经验,我也好学习学习。
链接中的例子是一些脚本攻击相关的内容,有时间的朋友可以点开看看。
1.不要相信Request.QueryString:
相信在asp时代,这个问题比较严重,不信,随便到网络上找几个asp的企业站,找到这种url"view.asp?id=xxx",改成"view.asp?id=xxx or 1=1",相信你会看到不一样的东西,到了.,应该很少了,不过上次看到有人说CSDN爆过哦,简单的解决方法是在取得数据时做数据类型验证或转换。比如:
int ViewID = 0;
if(int.TryParse(Request.QueryString["ID"], out ViewID)){
//...
}
2.不要相信maxlength:
有时候我们想客户端输入的某个值不超过一定的长度,这个时候可能就会用到input的maxlength,但maxlength能100%保证这个值的长度不超过maxlength吗?
显然,maxlength是不可信的,简单的解决办法是后台代码验证数据长度
string UserName = Request.QueryString["UserName"];
if(!string.IsNullOrEmpty(UserName)&&UserName.length > x){
//...提示错误或截断数据
}
3.不要相信Hidden:
有时候我们想把些信息保存到前台页面,然后再发送回来,我们又不想让客户看到这个信息,于是,我们把数据放到了hidden里面,那客户提交数据时,hidden里的内容真的是我们放的内容吗?
改变Hidden的值 用户名: 请先点击"查看Hidden"查看原来的值.正常情况,客户端提交给你的Type的值应该是"Robot!",你把狼蚁网站SEO优化的代码复制到地址栏然后Enter一下,再点查看Hidden看看; javascript:alert(window.c=function(){document.getElementById("Type").value = "我不是Robot!"}())</textarea>
[Ctrl+A 全选 注:]
这个我一时也没想到好的验证方法,暂时也没有特殊的需求说必须验证。
4.不要相信客户端验证:
比如2和3中的问题,可能有的朋友觉得,我客户端再加个验证不就OK了吗?可是,往往,客户端验证也是不安全的,,如果客户端禁用脚本,那客户端验证是完全失效的,,在脚本有效的情况下,脚本验证也是可以被篡改的。
覆盖Submit验证 正常情况,点提交按钮会验证用户名不能为空,并弹出提示,你把狼蚁网站SEO优化的代码复制到地址栏然后Enter一下,再点提交看看; javascript:alert(window.c=function(){document.getElementsByTagName("form")[0].onsubmit=function(){alert("我是不会验证数据的哦!");return true;}}())</textarea>
[Ctrl+A 全选 注:]
以前QQ空间里可以通过这个方法免费使用黄钻模板,不知道现在还有没有。这个就没有什么好的解决办法,只能后台再验证一次。
5.不要相信编辑器:
有的时候,可能项目中要用到一些简单的编辑器,于是,我们就找到了一些编辑器,把不需要的功能(比如编辑源码、插入图片等)剔除掉,就成了个简单的编辑器,那这样的编辑器还会有什么问题吗?
无标题文档 真正的编辑器应该会有些加粗、倾斜什么的功能,我就不弄了,以最原始的iframe为例。 这个简单的编辑器没有查看源码的功能,那客户是不是真的就改变不了里面的内容了? 请将狼蚁网站SEO优化的代码复制到地址栏然后Enter; javascript:alert(window.c=function(){document.getElementById("sampleEditor").contentWindow.document.body.innerHTML = '';}())</textarea> 如果用户在里面插入个script标签再提交给你呢? 其实还有个更简单的方法,直接去另一个页面复制,然后回到编辑器里粘贴,什么都过来了。
[Ctrl+A 全选 注:]
暂时也没有什么好的解决办法,以前找到过过滤script标签的代码,但似乎不太完美。
6.不要相信Cookie:
网站中不可避免的会使用到Cookie,但如果一不注意,小心你的Cookie成了别人的"Cookie",
取Cookie和写Cookie的js方法是在网上找到的,具体链接也找不到了。解决办法,似乎是Cookie加密(,即使是加密了,也尽量不要把敏感数据放到Cookie中),不知道各位高手还有没有其它好办法。
7.不要相信Request.UrlReferrer:
如果有朋友用这个来验证请求,那么请注意了,这个东西也是不可信的。见代码;
System.Net.HttpWebRequest request = System.Net.WebRequest.Create("https://.jb51./") as System.Net.HttpWebRequest;
request.Referer = "https://.jb51./";
...
那么,这个时候你取得的Urlreferrer会是https://.jb51./,但这个请求却是伪造的。
8.不要相信用户
用户就是你潜在的威胁,客户端的东西,永远都不要轻信。
另,select标签的内容也是不可信的,大家可以动手试试,随便建个页面,里面放个select,然后:
javascript:alert(window.c=function(){var s=document.getElementsByTagName("select")[0];for(var x = 0; x < 100; x++){s.options[x]=new Option("选项" + x, x)}}());
欢迎高手不吝赐教。。
1.不要相信Request.QueryString:
相信在asp时代,这个问题比较严重,不信,随便到网络上找几个asp的企业站,找到这种url"view.asp?id=xxx",改成"view.asp?id=xxx or 1=1",相信你会看到不一样的东西,到了.,应该很少了,不过上次看到有人说CSDN爆过哦,简单的解决方法是在取得数据时做数据类型验证或转换。比如:
int ViewID = 0;
if(int.TryParse(Request.QueryString["ID"], out ViewID)){
//...
}
2.不要相信maxlength:
有时候我们想客户端输入的某个值不超过一定的长度,这个时候可能就会用到input的maxlength,但maxlength能100%保证这个值的长度不超过maxlength吗?
显然,maxlength是不可信的,简单的解决办法是后台代码验证数据长度
string UserName = Request.QueryString["UserName"];
if(!string.IsNullOrEmpty(UserName)&&UserName.length > x){
//...提示错误或截断数据
}
3.不要相信Hidden:
有时候我们想把些信息保存到前台页面,然后再发送回来,我们又不想让客户看到这个信息,于是,我们把数据放到了hidden里面,那客户提交数据时,hidden里的内容真的是我们放的内容吗?
[Ctrl+A 全选 注:]
这个我一时也没想到好的验证方法,暂时也没有特殊的需求说必须验证。
4.不要相信客户端验证:
比如2和3中的问题,可能有的朋友觉得,我客户端再加个验证不就OK了吗?可是,往往,客户端验证也是不安全的,,如果客户端禁用脚本,那客户端验证是完全失效的,,在脚本有效的情况下,脚本验证也是可以被篡改的。
[Ctrl+A 全选 注:]
以前QQ空间里可以通过这个方法免费使用黄钻模板,不知道现在还有没有。这个就没有什么好的解决办法,只能后台再验证一次。
5.不要相信编辑器:
有的时候,可能项目中要用到一些简单的编辑器,于是,我们就找到了一些编辑器,把不需要的功能(比如编辑源码、插入图片等)剔除掉,就成了个简单的编辑器,那这样的编辑器还会有什么问题吗?
[Ctrl+A 全选 注:]
暂时也没有什么好的解决办法,以前找到过过滤script标签的代码,但似乎不太完美。
6.不要相信Cookie:
网站中不可避免的会使用到Cookie,但如果一不注意,小心你的Cookie成了别人的"Cookie",
取Cookie和写Cookie的js方法是在网上找到的,具体链接也找不到了。解决办法,似乎是Cookie加密(,即使是加密了,也尽量不要把敏感数据放到Cookie中),不知道各位高手还有没有其它好办法。
7.不要相信Request.UrlReferrer:
如果有朋友用这个来验证请求,那么请注意了,这个东西也是不可信的。见代码;
System.Net.HttpWebRequest request = System.Net.WebRequest.Create("https://.jb51./") as System.Net.HttpWebRequest;
request.Referer = "https://.jb51./";
...
那么,这个时候你取得的Urlreferrer会是https://.jb51./,但这个请求却是伪造的。
8.不要相信用户
用户就是你潜在的威胁,客户端的东西,永远都不要轻信。
另,select标签的内容也是不可信的,大家可以动手试试,随便建个页面,里面放个select,然后:
代码如下:
javascript:alert(window.c=function(){var s=document.getElementsByTagName("select")[0];for(var x = 0; x < 100; x++){s.options[x]=new Option("选项" + x, x)}}());
欢迎高手不吝赐教。。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程