zoukankan      html  css  js  c++  java
  • 笔记 3、互联网安全架构

    1、常见Web攻击手段


    (1)、XSS攻击 (Cross Site Scripting, 跨站脚本攻击)

     攻击者在网页嵌入恶意脚本呢程序,当用户打开网页,脚本开始在客户端浏览器执行,盗取客户端cookie、用户信息,执行木马程序等。

    例子:在input 输入框中输入script:<script>alert("haha")</script>。若网页未过滤该脚本,直接显示,脚本会运行显示弹出框。

    解决:将特殊符号 <、>、‘、” 都转义编码为&lt;   &gt;  &amp;  。JSTL、Struts等框架自带XML转义功能,如JSTL设置 excapeXML="true";


    (2)、CRSF (Corss Site Request Forgery,跨站请求伪造)

     攻击者盗用用户身份,以用户名义向第三方网站发送恶意请求。

    例子: 假设网站A上有恶意链接或脚本,点击该链接直接发生用户在银行网站B上的转账操作。用户在登录某银行网站A后,没有及时退出,若过后不久不小心在网站A上点击了链接,则银行网站B处理银行转账请求,网站A成功钓鱼。

    解决:(a)、将Cookie设置 httpOnly 属性,保证JavaScript、Applet等无法读取Cookie

                 (b)、增加Token,即在表单中增加一个隐藏域。

                 (c)、通过Refer识别:request.getHeader("refer"); refer 记录了HTTP请求的来源,判断来源是否合法。


    (3)、SQL注入

    将SQL命令伪装成正常的HTTP请求参数,传递到服务器端,欺骗服务器执行恶意SQL。

    例子:字符串拼凑SQL语句:  String sql = "select * from user where username ='" + username + "' and password='"+password+"'";

    若用户填入 username 为 "111",password为 "111  or 1=1; delete table user -- " ,这不但绕过验证,而且将把表数据删完,造成灾难性后果。

    解决:1、不使用字符串拼凑SQL,使用PreparedStatement

                 2、使用ORM框架,如Hibernate,Ibatis

                 3、密码等信息不能明文存储,加密时候加盐,防止穷举

                 4、处理好异常


    (4)、文件上床漏洞

    将恶意的病毒、木马等修改后缀名后,上传

    解决:通过文件的魔数判断文件类型,即常用类型的文件如JPEG、PNG、GIF、TIFF、BMP、DWG、PSD、XML、HTML、PDF、ZIP、RAR、WAV、AVI等,起始几个字节的内容是固定的。

    imagemagick 可处理图片。


    (5)、DDoS 攻击 (Distributed Denial of Service)  分布式拒绝服务攻击

    基本Dos: 利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器的相应。

    DDos 即是分布式的Dos。


    常见手段

    SYN Flood

              TCP连接需要三次握手。攻击者伪造大量不存在的IP地址请求TCP连接的SYN报文,服务器维护一个巨大的半连接等待IP列表,不断对列表进行遍历和重试,占用大量资源,使得正常用户无法通信。


    DNS Query Flood

    向被攻击服务器发送海量大部分不存在的域名解析请求。同时伪造端口和客户端IP,访问被访问控制列表过滤。


    HTTP Flood

    通过控制大量肉鸡或者匿名代理,模拟正常用户给网站发起请求直到网站拒绝服务为止。


    (6)、DNS域名劫持、CDN回源攻击、服务器权限提升、缓冲区溢出等。



    2、常用安全算法


    (1)、数字摘要:验证原文是否被篡改,MD5,SHA

    (2)、加密算法:对称 DES、3DES、AES,非对称RSA

    (3)、数字签名:将数字摘要与加密结合起来,私钥加密,公钥揭秘,从而证实作者身份,验证没有篡改。MD5withRSA,SHA1withRSA

    (4)、数字证书:可使用openSSL


    3、摘要认证


    4、签名认证


    5、HTTPS

    基础:SSL、TLS


    6、OAuth




















  • 相关阅读:
    跨DLL边界传递CRT对象的隐患(或诸如:HEAP[]: Invalid Address specified to RtlValidateHeap(#,#)问题出现的原因)
    【策略模式】不同的时间用不同的规则优先考虑策略模式
    【装饰模式】遵循开闭原则,使用一个类装饰另一个类
    【简单的工厂模式】一个简单的计算器
    【原】使用Golang语言编写echo程序
    WebBrowser或CHtmlView中轻松屏蔽脚本错误(JavaScript)
    春运买票难,是谁造成的?
    搜狗输入法使用感受
    [原]在 go/golang语言中使用 google Protocol Buffer
    防护针对SQL Server数据库的SQL注入攻击
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276410.html
Copyright © 2011-2022 走看看