请不要相信

1.不要相信Request.QueryString:

相信在asp时代,这个问题比较严重,不信,随便到网络上找几个asp的企业站,找到这种url"view.asp?id=xxx",改成"view.asp?id=xxx or 1=1",相信你会看到不一样的东西,到了.net,应该很少了,不过上次看到有人说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里的内容真的是我们放的内容吗?请点击链接看看例子。

这个我一时也没想到好的验证方法,暂时也没有特殊的需求说必须验证。

4.不要相信客户端验证:

比如2和3中的问题,可能有的朋友觉得,我客户端再加个验证不就OK了吗?可是,往往,客户端验证也是不安全的,首先,如果客户端禁用脚本,那客户端验证是完全失效的,另外,在脚本有效的情况下,脚本验证也是可以被篡改的。请点击链接看看例子。

以前QQ空间里可以通过这个方法免费使用黄钻模板,不知道现在还有没有。这个就没有什么好的解决办法,只能后台再验证一次。

5.不要相信编辑器:

有的时候,可能项目中要用到一些简单的编辑器,于是,我们就找到了一些编辑器,把不需要的功能(比如:编辑源码、插入图片等)剔除掉,就成了个简单的编辑器,那这样的编辑器还会有什么问题吗?请点击链接看看例子。

暂时也没有什么好的解决办法,以前找到过过滤script标签的代码,但似乎不太完美。

6.不要相信Cookie:

网站中不可避免的会使用到Cookie,但如果一不注意,小心你的Cookie成了别人的"Cookie",请点击链接看看例子。
取Cookie和写Cookie的js方法是在网上找到的,具体链接也找不到了。解决办法,似乎是Cookie加密(当然,即使是加密了,也尽量不要把敏感数据放到Cookie中),不知道各位高手还有没有其它好办法。

7.不要相信Request.UrlReferrer:

如果有朋友用这个来验证请求,那么请注意了,这个东西也是不可信的。见代码;
System.Net.HttpWebRequest request = System.Net.WebRequest.Create("http://www.cnblogs.com/") as System.Net.HttpWebRequest;
request.Referer = "http://www.cnblogs.com/";
...

那么,这个时候你取得的Urlreferrer会是http://www.cnblogs.com/,但这个请求却是伪造的。

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)}}());

欢迎高手不吝赐教。示例代码下载。

时间: 2024-08-12 05:56:38

请不要相信的相关文章

c语言-这个C语言多项式就和问题,精确度不是太会。为啥就相差0.000512。请详细说明

问题描述 这个C语言多项式就和问题,精确度不是太会.为啥就相差0.000512.请详细说明 解决方案 改用double 调整计算顺序,不要先乘再除,尽量避免乘除法的精度损失 解决方案二: #include <iostream> using namespace std; double f1(int n) { double r = 1; for (int i = 2; i <= n; i++) r *= (double)i; return r; } double f2(double x, i

vs2013工具栏问题-vs2013 中工具栏为什么没有显示完全?请大侠指点

问题描述 vs2013 中工具栏为什么没有显示完全?请大侠指点 vs2013 中工具栏为什么没有显示完全?请大侠指点 解决方案 是不是工具拦宽度限制了. 解决方案二: 这是第三方的控件么?什么语言的,是不是嵌套在什么控件内了. 解决方案三: 将工具栏拖出来,看看后面有没有东西.如果拖出来之后,后面有东西,那说明工具栏宽度不够. 解决方案四: 工具栏宽度怎么设置?CMFCToolsBar里面好像没有这种方法

php curl采集高手请进

问题描述 php curl采集高手请进 http://www.lecai.com/ 这个网站怎么用php/url技术进行模拟登录?求参考程序..... 解决方案 我大致看了一下,个人习惯使用Snoopy.class.php模拟登陆,觉得不好可以忽略 POST http://www.lecai.com/user/ajax_login.php HTTP/1.1Host: www.lecai.comUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:3

一道关于数组的算法题目,请用java实现。

问题描述 一道关于数组的算法题目,请用java实现. 在这个图片里我们有不同高度的墙.这个图片由一个整数数组所代表,数组中每个数是墙的高度.上边的图可以表示为数组[2,5,1,2,3,4,7,7,6]. 假如开始下雨了,那么墙之间的水坑能够装多少水呢? 请用java实现(任意数组求出结果) 解决方案 参考这三个贴 http://www.cnblogs.com/xiangnan/archive/2013/11/01/3402467.html http://blog.jobbole.com/5070

请人设计一个串口终端软件

问题描述 请人设计一个串口终端软件 计算机与目标设备之间的连接方式为标准异步串行接口,采用TXD.RXD.RTS.CTS.GND 5线连接方式.软件功能:通过串口命令对目标设备进行参数的设置和查询,终端软件与目标设备之间实现串口数据的收发.有意者详谈.

无法读取此系统上以前注册的服务器的列表。请在“已注册的服务器”窗口中重新注册您的服务器

环境: 服务器系统: 数据库版本:Microsoft SQL Server 2008 R2 错误提示如下图: 截图来自:点击打开链接 详细错误信息: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerException: 无法读取此系统上以前注册的服务器的列表.请在"已注册

应用-android中设置支持javascript会引入xss变量到你的程序中,请检查清楚

问题描述 android中设置支持javascript会引入xss变量到你的程序中,请检查清楚 Using setJavaScriptEnabled can introduce XSS vulnerabilities into you application, review carefully. 如何理解上面这句英语啊?? 解决方案 你指的是在webView上设置支持JavaScript么? 解决方案二: @SuppressLint("SetJavaScriptEnabled") 忽略

来咯-java难学吗请各位回答一下

问题描述 java难学吗请各位回答一下 监控哦哦魔女突然如泣如诉兔兔天助自助者兔兔喔喔喔喔喔喔喔哦 图我也在学习我摸摸我也在学习 解决方案 易学难精,书本上学的都是基础中的基础,只有在项目实战中才能学到真东西. 解决方案二: java很简单的啊 无非就是if else 类调来调去 解决方案三: 相对于其他语言,Java是很好学的.需要的就是大量的练习! 解决方案四: 入门简单,实践出真知 解决方案五: 很好学,建议你看视频学,有不会的也不要纠结,先把视频看完,然后做项目 解决方案六: 入门之后什

mfc-MFC消息机制谁帮我做个注释,请逐行注释。不要回复无关内容

问题描述 MFC消息机制谁帮我做个注释,请逐行注释.不要回复无关内容 class CMsgFrame : public CFrameWnd { private: static const AFX_MSGMAP_ENTRY _messageEntries[]; protected: static AFX_DATA const AFX_MSGMAP messageMap; static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); virtual co

关于cobol问题-关于COBOL的一些操作问题请赐教

问题描述 关于COBOL的一些操作问题请赐教 本人是初学者,对COBOL的一些操作和命令还不熟,不知道该怎么做,请问谁有没有COBOL的例子及其操作步骤的,感激! 解决方案 http://wenku.baidu.com/link?url=uPkcvhMb4Cp4ddupz3xps7EFIM1wFLvjwfFQD0EVkSzQuueBix2CmwMWcdDuCioNYwIuFp4Y71HS1302ZvMUlNfQ4smhTaTM7FxNMjVV03W 解决方案二: 我学过一点,有啥问题,可以问我,