• Web项目开发中常见安全问题及防范


    计算机程序主要就是输入数据 经过处理之后 输出结果,安全问题由此产生,凡是有输入的地方都可能带来安全风险。根据输入的数据类型,Web应用主要有数值型、字符型、文件型。

    要消除风险就要对输入的数据进行检查,对于Web应用来说,检查的位置主要是前端和后端。前端检查只能防止正常状况,没法防止通过工具、程序绕开前端检查直接把数据发送给后端。

    输入检查

    防止输入注入型攻击。所有的输入数据都要检查,除了前端检查外,为防止使用工具、程序绕开前端检查直接把数据发送给服务器,后端也要检查所有输入数据。

    依据产品文档的要求进行合法性检查,数值型,手机号,时间,邮箱等。

    检查文本型是否含控制字符,过滤掉控制字符

    检查文本型的长度

    Querystring中参数值字符串转义,使用urlencode函数处理

    文件上传

    防止文件注入型攻击。

    1、文件上传目录设置成不可执行

    2、判断文件类型。结合MIME type与文件扩展名,设置文件类型白名单。对于图片文件,可以利用图片库函数深层次检查是否真是图片。

    3、重命名文件名。

    4、文件服务器使用独立的域名。

    输出转义

    防止XSS(跨站脚本攻击)。向页面输出的文本型数据进行html encode(转义),即是将一些html中的特殊字符转义成普通字符,比如 & 转义成 &amp;< 转义成 &lt;,'与"都要转义。对应的函数:javascriptencode,php的htmlentities。

    同理xml数据包里的字符串值使用xmlencode,json数据包的字符串值使用jsonencode转义。

    XSS处理

    XSS的本质是HTML注入,用户输入的数据被当成Html代码执行了。

    1、cookie使用HttpOnly限制

    使得在客户端的js代码不能读取cookie值,但是不能防止从HTTP header里得到cookie值。

    2、输出文本HTML转义

    对网页上显示的文本内容使用HtmlEncode转义。js函数:OWASP ESAPI中的encodeCharacter。其它的如xmlencode、jsonencode等转义函数。

    3、检查输入的URL

    输入的url添加上 http: 或者 https:,然后转义输出到网页端

    4、对传入js函数的文本型参数值进行javascript转义

    先进行javascript转义再进行HTML转义。

    总结如下

    SQL注入

    预防办法:数据与代码分离,即不用字符串拼凑SQL语句,使用SQL预处理方法(参数使用占位符 ?)。

    XST处理

    XST(跨站追踪)攻击,关闭Web 服务器的TRACE方法。

    CSRF攻击的防御

    通常需要防御CSRF(Cross-Site Request Forgeries)攻击的页面是用户登录、修改/删除确认、订单确认等添加新数据、修改数据的页面,此外此类页面必须使用POST方式提交。

    HTTP头注入

    替换HTTP头字符值中的换行符。

    Cookie安全

    Cookie仅保存SessionId值,设置HttpOnly属性为On,

    用户密码安全

    1、使用安全的bcrypt替代MD5(MD5本来用于生成指纹,用来做加密算法是误用),bcrypt会产生随机盐 salt

    权限控制

    1、SSO单点登录。OpenID系统

    2、Spring Security的实现-基于角色的访问控制(Role-Based Access Control)RBAC

    3、基于数据的访问控制。比如将用户id、对象id修改成另一个存在的id,如果没有检查当前登录用户是否是参数对应的id用户,就会产生窜改另一个用户数据的问题,也即是越权访问。

    4、OAuth授权。OAuth第三方开源库

    5、Sessionid。sessionid加密处理

  • 相关阅读:
    ASP.NET实现写入和读取图片(C#+SQL Server)
    nginx for windows: 让nginx以服务的方式运行(亲侧修正)
    开源射击FPS游戏Blood Frontier Beta 2发布
    批处理更改IP
    Javascript 函数: CTRL+回车 提交表单
    汇总Javascript各种判断脚本
    Linux在好莱坞战胜了微软?
    SATA硬盘和IDE硬盘共存问题
    总结性知识:107个常用Javascript语句
    ASP.NET调用javascript脚本的方法总结
  • 原文地址:https://www.cnblogs.com/aiandbigdata/p/10057659.html
Copyright © 2020-2023  润新知