zoukankan      html  css  js  c++  java
  • 读书笔记:网站架构之安全篇

    目录:

    一、网站应用攻击与防御

    二、信息加密技术

    三、信息过滤及反垃圾 


    PS:本文为《大型网站技术架构 & 核心原理与案例分析(李智慧 著)》一书的读书笔记


    // =======================================================================================


    网站应用攻击与防御


    *:全球约70%的Web应用攻击来自XSS攻击和SQL注入,此外还包括CSRF,Session劫持等


    一、XSS攻击

    1、XSS攻击:跨站点脚本攻击(Cross Site Script)

    *:黑客通过在网页文件嵌入恶意JavaScript脚本,在用户打开网页时,该脚本控制浏览器进行恶意操作

    *:反射型XSS:攻击者诱使用户点击一个嵌入恶意脚本的链接,恶意脚本在攻击者服务器中

    *:持久性XSS:攻击者提交带恶意脚本的请求,保存在被攻击Web站点的服务器中,用户正常访问Web站点均受攻击

    2、主要防御手段

    *:消毒:对特殊字符转义,如"< >"等

    *:HttpOnly属性:Cookie添加HttpOnly属性,使得攻击者无法通过JavaScript脚本窃取Cookie


    二、SQL注入

    1、SQL注入:指攻击者在HTTP请求中注入恶意SQL命令,使得应用服务器调用请求构造SQL时和恶意SQL命令一起构造,并在数据库执行

    2、SQL注入需攻击者了解数据库结构,一般攻击者对通过下面方式获取:

    *:开源软件,如Discuz等

    *:网站的错误回显

    *:猜测性的盲注

    3、主要防御手段

    *:消毒:通过正则表达式过滤"drop table"等可能注入的SQL

    *:参数绑定:使用预编译绑定参数是最好的手段,恶意SQL只会被当成SQL参数而不是命令


    三、CSRF攻击(身份伪造)

    1、CSRF攻击:跨站点请求伪造(Cross Site Request Forgery)

    *:攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易等

    *:核心为利用用户浏览器Cookie或服务器Session策略,盗取用户身份

    2、主要防御手段

    *:表单Token:CSRF伪造用户请求,需构造用户请求的所有参数,表单Token通过在请求参数中增加一个随机数Token来阻止,每次响应页面Token均不同

    *:验证码:即需手动输入验证码,但这是一个不好的用户体验

    *:Referer源检查:Http请求头的Referer域中记录着请求来源,通过检查请求来源判断请求是否合法


    四、其他攻击和漏洞

    1、错误回显:即Web服务器异常时,直接把异常堆栈信息输出给客户端浏览器

    *:防御方案很简单,只需配置跳转500页面到专门错误页面即可

    2、HTML注释:在客户端的HTML代码中注释相关程序信息,给黑客造成攻击便利

    3、文件上传:攻击者可以用网站提供的文件上传功能上传可执行文件

    *:可通过限定上传文件格式等方式来防御

    4、路径遍历:攻击者在URL中使用相对路径,遍历系统未开放的目录和文件

    *:防御方法主要为将Js、HTML等资源文件独立部署等


    // ===========================================================


    信息加密技术


    一、单向散列加密

    *:单向散列加密指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,如MD5和sha1等

    *:虽然没有破解单向散列加密的算法,但是由于人为设置密码有一些常见模式(如123等),因此攻击者常用彩虹表(人为常用密码和对应密文的映射)等方式进行猜测式破解

    *:为了加强单向散列计算的安全性,还可以给散列算法加盐,盐相当于加密的密钥


    二、对称加密

    *:对称加密指加密和解密使用同一个密钥,如DES和RC等。常用于信息需要安全交换和存储的场合,如Cookie加密等

    *:优点是算法简单、加密效率高,缺点是远程通信如何安全地交换密钥是个难题


    三、非对称加密

    *:非对称加密的加密和解密使用不同密钥,其中一个对外公开的公钥,一个只有所有者知道的私钥,如RSA等。常用于信息安全传输,数字签名等场合

    *:用公钥加密的信息需要用私钥才能解开,相反,用私钥加密的信息只有公钥能解开


    四、密钥安全管理

    *:前面讲述的这几种加密,能够起到安全效果的一个重要前提就是密钥的安全,即信息的安全是靠密钥保证的

    *:方案1:把密钥和算法放在独立服务器上由专人维护。较安全,但应用性能开销较大,每次加解密都需要一次远程服务调用

    *:方案2:把加解密算法放在应用服务器,密钥放在独立服务器。可把密钥切分成片分别存储,兼顾安全性又改善性能


    // ===========================================================


    信息过滤及反垃圾 


    一、文本匹配

    *:主要用于解决敏感词过滤问题

    *:可使用正则表达式,但其效率较低,基本都是使用Trie树的变种,空间和时间复杂度都比较好


    二、分类算法

    *:主要用于网站垃圾信息的识别

    *:简单实用的分类算法是贝叶斯分类,这是利用概率统计方法进行分类的算法


    三、黑名单

    *:将发布过垃圾信息的IP或者用户列入黑名单,以后将这些IP或者用户的信息过滤掉

    *:黑名单可以用Hash表实现,存于内存做计算,但如果黑名单很大会很占内存。在需求不需完全精确情况下,可使用布隆过滤器替代Hash表




  • 相关阅读:
    CodeForces 1105D-暴力BFS
    POJ 1258 Agri-Net (最小生成树)
    POJ 1251 Jungle Roads (最小生成树)
    hiho 1097 最小生成树一·Prim算法 (最小生成树)
    Codeforces 544E K Balanced Teams (DP)
    Codeforces 408D Long Path (DP)
    PTA L1题目合集(更新至2019.3)
    HDOJ 3308 LCIS (线段树)
    HDOJ 1698 Just a Hook (线段树)
    HDOJ 4267 A Simple Problem with Integers (线段树)
  • 原文地址:https://www.cnblogs.com/riasky/p/3476454.html
Copyright © 2011-2022 走看看