《大型网站技术架构》读书笔记8 架构-网站的安全架构

网站的安全架构

  • 网站应用攻击最主要的两种手段:XSS攻击和SQL注入攻击

  • XSS攻击:黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。
    常见的XSS攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的。另外一种XSS攻击是持久型XSS攻击,黑客提交含有恶意脚本的请求,保存在被攻击的Web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的。
    防御手段:请求参数消毒,浏览器禁止页面JavaScript访问带有HttpOnly属性的Cookie。
    反射型XSS攻击

    持久型XSS攻击

  • 注入攻击:分为SQL注入攻击和OS注入攻击

  • SQL注入攻击:攻击者在HTTP请求中注入恶意SQL命令(drop tableusers;),服务器用请求参数构造数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。
    防御手段:请求参数消毒,使用预编译手段、绑定参数。

  • 其他常见web应用攻击:CSRF、Session劫持等

  • CSRF攻击:攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易、发表评论等。
    防御手段:表单Token、验证码、Referer check(HTTP请求头的Referer域中记录着请求来源,可通过检查请求来源,验证其是否合法)

  • 其他攻击和漏洞:
    Error Code错误回显:通过配置web服务器参数,跳转500页面到专门的错误页面即可,web应用常用的MVC框架有这个功能。
    HTML注释显示在客户端浏览器:程序最终发布前需要进行代码review或自动扫描,避免HTML注释漏洞。
    文件上传:设置上传文件白名单,只允许上传可靠的文件类型。此外还可以修改文件名、使用专门的存储等手段,保护服务器免受上传文件攻击。
    路径遍历:将JS、CSS等资源文件部署在独立服务器、使用独立域名,其他文件不使用静态URL访问,动态参数不包含文件路径信息。

Web应用防火墙

  • 有一款产品能够统一拦截请求,过滤恶意参数,自动消毒、添加Token,并且能够根据最新攻击和漏洞情报,不断升级对策,处理掉大多数令人头痛的网站攻击。
  • ModSecurity是一个开源的Web应用防火墙,探测攻击并保护Web应用程序,既可以嵌入到Web应用服务器中,也可以作为一个独立的应用程序启动。ModSecurity最早只是Apache的一个模块,现在已经有Java、.NET多个版本,并支持Nginx。
  • ModSecurity采用处理逻辑与攻击规则集合分离的架构模式。处理逻辑(执行引擎)负责请求和响应的拦截过滤,规则加载执行等功能。而攻击规则集合则负责描述对具体攻击的规则定义、模式识别、防御策略等功能(可以通过文本方式进行描述)。处理逻辑比较稳定,规则集合需要不断针对漏洞进行升级,这是一种可扩展的架构设计。

网站安全漏洞扫描

  • 网站安全漏洞扫描工具是根据内置规则,构造具有攻击性的URL请求,模拟黑客攻击行为,用以发现网站安全漏洞的工具。

信息加密技术

  • 为了保护网站的敏感数据,应用需要对这些信息进行加密处理,信息加密技术可分为三类:单向散列加密、对称加密和非对称加密。
  • 单向散列加密:通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出进行计算从而获得输入信息。实现密码加密保存
    为了加强单向散列计算的安全性,还会给散列算法加点盐(salt),salt相当于加密的密钥,增加破解的难度。
    常用的单向散列算法有MD5、SHA等。
  • 对称加密:指加密和解密使用的密钥是同一个密钥(或者可以互相推算)。
    通常用在信息需要安全交换或存储的场合,如Cookie加密、通信加密等。
    优点是算法简单,加解密效率高,系统开销小,适合对大量数据加密。
    缺点是加解密使用同一个密钥,远程通信的情况下如何安全的交换密钥是个难题,如果密钥丢失,那么所有的加密信息也就没有秘密可言了。
    常用的对称加密算法有DES算发、RC算法等。
  • 非对称加密:非对称加密和解密使用的密钥不是同一密钥,其中一个对外界公开,被称作公钥,另一个只有所有者知道,被称作私钥。用公钥加密的信息必须用私钥才能解开,反之,用私钥加密的信息只有用公钥才能解开。理论上说,不可能通过公钥计算获得私钥。
    通常用在信息安全传输,数字签名等场合。
    常用算法有RSA算法等。

密钥安全管理

  • 密钥:单向散列加密用到的salt、对称加密的密钥、还是非对称加密的私钥。
  • 改善密钥安全性的手段之一:把密钥和算法放在一个独立的服务器上,甚至做成一个专用的硬件设施,对外提供加密和解密服务,应用系统通过调用这个服务,实现数据的加解密。
    这种方案成本较高,而且有可能会成为应用的瓶颈,每次加密、解密都需要进行一次远程服务调用,系统性能开销也较大。
  • 改善密钥安全性的手段之二:将加解密算法放在应用系统中,密钥则放在独立服务器中,为了提高密钥的安全性,实际存储时,密钥被切分成数片,加密后分别保存在不同存储介质中,兼顾密钥安全性的同时又改善了性能。
    加解密服务接口通过密钥服务器的密钥服务取得加解密密钥,并缓存在本地(定时更新)。
    密钥服务器中的密钥则来自多个密钥存储服务器,一个密钥分片后存储在多个存储服务器中,每个服务器都有专人负责管理。
    密钥申请者、密钥管理者、安全审核人员通过密钥管理控制台管理更新密钥,每个人各司其事,没有人能查看完整的密钥信息。
posted @ 2021-09-07 16:31  糖醋排骨加辣椒  阅读(54)  评论(0编辑  收藏  举报