• Top 10 Security Issue Solution II


    OWASP Top 10 Security Issue

    10个安全隐患列表:

           Injection

          注入

           Cross-Site Scripting (XSS)

          跨站脚本

           Broken Authentication and Session Management

          错误的认证和会话管理

           Insecure Direct Object References

          不正确的直接对象引用

           Cross-Site Request Forgery (CSRF)

          伪造跨站请求

           Security Misconfiguration

          安全配置错误

           Insecure Cryptographic Storage

          不安全的加密存储

           Failure to Restrict URL Access

          不限制URL访问

           Insufficient Transport Layer Protection

          传输层保护不足

           Unvalidated Redirects and Forwards

          未验证的重定向和传递

    解决办法概要

           Injection

          sql语句全部使用参数形式调用,不拼sql语句

          对输入都要验证:客户端验证+服务器端验证

          数据库操作的授权

          针对每个输入Field,来验证字符串是否允许输入

           Cross-Site Scripting (XSS)

          输入参数,使用微软的Anti-XSS组件过滤

          输出到界面html元素’s string, 使用微软的Anti-XSS组件过滤

          SRE(Security Runtime Engine) HttpModule全自动方式

           Broken Authentication and Session Management

          标示sessioncookie设置为HttpOnly Cookie

          Session, cookie, cache设置过期时间

          不使用cookieless模式

          注销动作需要销毁所有和session相关的设置,比如cache, cookie

           Insecure Direct Object References

          业务对象表:技术主键IDInt+对外引用ID(Guid)

          application layer: 增加一些HashTable==> Guid-->Int 对应关系全局缓存

           Cross-Site Request Forgery (CSRF)

          使用微软的Anti-CSRF组件过滤每个post请求

           Security Misconfiguration(NEW)

          Web.config命令行加密

           Insecure Cryptographic Storage

          对称加密配合随机的PasswordSalt参数

          加密算法尽量使用DES等,因为SH1MD5加密已经被认为破解了

           Failure to Restrict URL Access

          使用给每个aspx页面写basepage以达到对每个页面进行权限判断

           Insufficient Transport Layer Protection

          验证页面:ssl httponly, cookie

           UnvalidatedRedirects and Forwards (NEW)

          针对每个需要重定向的url进行验证是否合法

    应对之法

    Injection

           针对sql的操作都使用参数方式调用

           不使用动态sql

           如果使用linq/entity framework可降低这种安全隐患的几率

           在入口限制允许输入的数据,比如年龄这个field,在页面中限制住只允许数字,不能超过100,不能小于0

           除了表示层的验证外,业务逻辑层还要验证一次

    Cross-Site Scripting (XSS)

           过滤输入的参数

           过滤输出的文本

           使用微软的Anti-XSS组件来实现过滤

          

           使用Anti-XSS SRE(Security Runtime Engine)实现全自动的过滤(用了HttpModule来过滤)

    Broken Authentication and Session Management

           标示sessioncookie设置为HttpOnly Cookie

           Session, Cookie, Cache设置过期时间

           不使用cookieless模式

           注销动作需要销毁所有和session相关的设置,比如cache, cookie

    Insecure Direct Object References

           url中,不能看到能猜测的key,比如数据库中的自增长id,比如看到3,很容易猜测下个是4,尽量使用guid,考虑到int类型的primary key在数据库分析中的方便性,所以同时增加intguid类型的primary key

           业务对象表:技术主键IDInt+对外引用ID(Guid)

           application layer: 增加一些HashTable==> Guid-->Int 对应关系全局缓存, 程序设计中在Get/Update/Delete方法中需要注意同步这些key

    Cross-Site Request Forgery (CSRF)

           只用于post请求,对于get请求无效

           使用于post操作中,比如我可以将一个aspx页面save as到本地进行修改,比如去掉js验证、修改HiddenFieldvalue等,然后把formaction改为目标url,当submit这个 form后就不会validate,直接post到目标网址了,如果对方也没有在服务器端验证,不正常的数据就加入到数据库中(或者支付金额等。。。);由于ViewState有效、事件验证也有效,所以需要额外处理

          Anti-CSRF

          自定义ViewState

           Anti-CSRF

          使用HttpModule方式,Monitor每个post请求,在每个请求中,设置一个额外的cookie,当post操作时用来监测是否有效请求(httpmodule会在每次请求页面时判断cookievalueserver sidecontext.Itemsvalue是否一致)

           自定义ViewState

          默认的ViewState是没有加密的,可以通过下载一个叫ViewStateDecoder的工具能看到ViewState中保存的信息;可以给整个site写一个BasePage, 在里面设置ViewStateUserKeyper session的一个value,这样每个sessionViewState加密都不同

    Security Misconfiguration

           报错之后的重定向配置--CustomError

           Config文件的加密

          使用命令行,如(run as admin) C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -site "VulnerableApp" -app "/" -pe "connectionStrings"

    Insecure Cryptographic Storage

           对称加密配合随机的PasswordSalt参数

           加密算法尽量使用DES等,因为SH1MD5加密已经被认为破解了

    Failure to Restrict URL Access

           使用给每个aspx页面写basepage以达到对每个页面进行权限判断

           页面上要对可做/不可做的操作/布局进行控制

           给具体的函数贴上权限限制的tag,如:

          [PrincipalPermission(SecurityAction.Demand, Role = "Admin")]

          public void RemoveUserFromRole(string userName, string role)

          {

            Roles.RemoveUserFromRole(userName, role);

          }

    Insufficient Transport Layer Protection

           SSL保护

           HttpOnly Cookie

           Secure Cookie

           Web.config中相应设置cookie的配置

          <httpCookies requireSSL="true" />

          <httpCookies httpOnlyCookies="true" />

           具有敏感信息的页面需要使用ssl保护

    Unvalidated Redirects and Forwards

           针对每个需要重定向的url进行验证是否合法

          使用白名单,在名单里面的才允许redirect

  • 相关阅读:
    leetcode 111二叉树的最小深度
    leetcode 104. 二叉树的最大深度
    React简介,开发环境搭建,项目结构目录
    词典中最长的单词
    React export和export default的区别
    哈希表-两个数组的交集
    BFS-地图分析&岛屿数量
    js 下拉框实现去重 & layui可输入可搜索的下拉框
    BFS(找最短距离,最短路径)二叉树最小深度&打开转盘锁&对称二叉树
    python操作es增删改查
  • 原文地址:https://www.cnblogs.com/aarond/p/SecurityIssues.html
Copyright © 2020-2023  润新知