zoukankan      html  css  js  c++  java
  • 基本代码安全知识

    http://www.cnblogs.com/BenjaminYao/archive/2010/07/09/1774074.html

    昨天公司进行代码安全规范培训,有些东西早已知道,而有些东西第一次听说,于是都记下来和大家一起分享。

     

    1.       防止SQL注入

    a.       除了过滤单引号“ ' ”,还要过滤数据库中的注释符号“ -- ”。

    b.       SQL语句中的字符串拼接,是很不靠谱的;实在要拼接,一定要从代码安全的角度多想想。

     

    2.       文件上传漏洞

    这是我头一次听说有这么一个漏洞。

    现象:

    假设我们使用的是IIS6.0及之前版本,当我们上传一个文件名为【熊猫烧香.aspx .jpg】,那么存到服务器上的文件将会是【熊猫烧香.aspx】。

     

    原因:

    文件名【熊猫烧香.aspx .jpg】在“.aspx”和“.jpg”之间有一个空格,IIS6.0及之前版本对于上传文件名的解析是从左向右的,如果在解析时遇到空格,就认为这个文件名已经结束,于是存在服务器上的文件就是【熊猫烧香.aspx】。

     

    解决方案:

    我们一般都会对上传文件的后缀名进行检查,但是IIS的漏洞绕过了我们的检查,于是上传文件重命名就是一个不错的解决办法。我们把每次上传文件的后缀拿出来,取个新名字,再加上原后缀,这个问题就可解决。

     

    我在之前的开发,有过上传文件的程序,碰巧我对每个上传文件都进行了重命名,但我并不知道有这个漏洞,运气啊运气…

    另外补充两点:

    a.       如果文件名中包含特殊字符,比如【熊猫烧香又来了.aspx;不是吧.jpg】这是一个文件名,中间包含分号“ ; ”,IIS6.0及之前版本在解析上传文件时,分号“ ; ”之后的文件名都不认。

    b.       Apache服务器对上传文件的检查是从右向左的。

     

    3.       Cookie欺骗

    这个应该很简单,大家都知道从哪里可以拿到cookie,怎么伪装cookie,怎么把一台机器上的cookie移到另外一台… Cookie很常用,特别在跨域访问时,我们常常会把用户名加密以后放在客户端。检查用户是否登录,就会去查看这个cookie,那么请别忘了在检查时加上客户端ip一起校验,在一定程度上可以阻止cookie欺骗。

     

    4.       XSS跨站脚本攻击

     对于这种攻击,我们要对左右尖括号“<、>”、分号“ ; ”、单引号“ ' ”进行过滤。我们对于用户输入或者获取来自地址栏的参数值(Request.QueryString["XXX"]),不应支持HTML编码。处理的方法有很多,"HttpUtility.UrlEncode”就是一种。

     

    5.       其他漏洞

     标签<body>有个属性"onload”,它会把属性中的值直接解析为javascript脚本,而不需要"<script></script>”或"javascript:”。据说淘宝曾经因为不知道这个漏洞,而导致上万的用户受到损失。

  • 相关阅读:
    DB2 for Z/os Statement prepare
    Foreign key (referential) constraints on DB2 LUW v105
    复制Informational constraints on LUW DB2 v105
    DB2 SQL Mixed data in character strings
    DB2 create partitioned table
    MVC中使用EF的技巧集(一)
    Asp.Net MVC 开发技巧(二)
    Linq使用技巧及查询示例(一)
    Asp.Net MVC 开发技巧(一)
    Asp.Net MVC Identity 2.2.1 使用技巧(八)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1774094.html
Copyright © 2011-2022 走看看