zoukankan      html  css  js  c++  java
  • 请不要相信...[转帖]

    很久没有上来发文章了,不过最近博客园上风声很紧啊,有啥东西,也不敢随便往首页放啊,今天冒死放到首页,虽不算什么高深的东西,但至少也算一点点 小经验,分享分享吧,如果您是高手,而且您还有点时间,那么请你耐心看完整篇文章,然后再帮忙指点指点,留下您的经验,我也好学习学习。链接中的例子是一 些脚本攻击相关的内容,有时间的朋友可以点开看看。

    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,然后:

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

    转自:http://www.cnblogs.com/robot/archive/2009/04/15/1436107.html

    作者:狼Robot

  • 相关阅读:
    文件权限---I
    python查看变量在内存中的地址
    Python3 基本数据类型
    print语法
    任务管理器启动项显示“没有可显示的启动项”如何解决?
    nginx 虚拟主机配置
    nginx 高级应用
    nginx 日志文件详解
    nginx 编译安装与配置使用
    python获取header脚本
  • 原文地址:https://www.cnblogs.com/liangwei389/p/1436622.html
Copyright © 2011-2022 走看看