写点什么

11.1 安全架构:Web 攻击与防护

用户头像
张荣召
关注
发布于: 2020 年 12 月 06 日

1.XSS 攻击

XSS:Cross Site Scripting(CSS 缩写与样式表 css 混淆=>XSS):跨站点脚本攻击


解析:前提:用户处于登录状态。

          1.用户登录

          2.攻击者推送含有恶意脚本的 URL 给用户,

       如:Weibo.com/pub/star/xyyyd%22%3e/3cscript%20src=//www.sdt.cn/images/t.js%3e%3c/script%3e?tpye=update

            3.用户点击该 URL,黑客脚本被浏览器解析.

            4.向服务器提交非用户意愿的请求,比如:发一条微博,其微博地址包含攻击脚本:

               如:Weibo.com/pub/star/xxxxd%22%3e/3cscript%20src=//www.sdt.cn/images/t.js%3e%3c/script%3e?tpye=update

         5.其他用户访问该微博,攻击脚本扩散开。

特点:攻击者推送攻击脚本。

解析:直接攻击服务器。

特点:通过脚本攻击,达成目的。

1.1.XSS 攻击防御手段

消毒:XSS 攻击者一般都是通过在请求中陷入恶意请求达到攻击目的,这些脚本是一般用户输入中不使用的,如果进行过滤和消毒处理,即对某些 HTML 危险字符转义,如">"转义为"&gt","<""&lt"等,就可以防止大部分攻击。为了避免对不必要的内容错误转义,如"3<5"中的"<",需要对文本匹配后在转义,如"<img src="这样的上下文中"<"才转义。事实上,消毒几乎是所有网站最必备的 XSS 防攻击手段。

2.SQL 注入攻击


2.1.获取数据库表结构信息的手段

开源:如果网站采用开源软件搭建,

如:Discuz!搭建论坛网站,那么网站数据库结构就是公开的,攻击者可以直接获得。

错误回显:如果网站开启错误回显,攻击者故意构造非法参数,

服务端异常信息会输出到浏览器端,为攻击者猜测数据库表结构提供了遍历。

盲注:网站关闭错误回显,攻击者根据页面变化情况判断 SQL 语句的执行情况,

据此猜测数据库表结构,此种方式攻击难度较大。

2.2.SQL 注入攻击防御手段

消毒:和防 XSS 攻击一样,请求参数消毒是一种比较简单粗暴又有效的手段。通过正则匹配,过滤语句中可能注入的 SQL。如:"drop table"    "\b(?:update\b.*?\bset|delete\b|W*?|bfrom)\b"等


SQL 预编译参数绑定:使用编译手段,绑定参数是最好的防 SQL 注入方法。目前许多数据访问层框架,如:myBatis,Hibernate 等,都实现 SQL 预编译和参数绑定,攻击者的恶意 SQL 会被当做 SQL 的参数,而不是 SQL 命令被执行。

3.CSRF 攻击

CSRF:跨站点请求伪造(Cross-site request forgery)-(CSRF/XSRF)

特点:钓鱼网站,诱导用户访问攻击者服务器。然后伪造用户请求。

3.1.CSRF 攻击防御手段

表单 Token:CSRF 是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才可以。表单 Token 就是阻止攻击者获得所有请求参数的可能,

在页面表单中增加一个随机数 Token,每次请求的 Token 都不相同,请求提交后检查 Token 的值是否正确以确定请求提交者是否合法。


验证码:相对来说,验证码则更加简单高效,即请求提交时,需要用户输入验证码,以避免用户在不知情的情况下被攻击者伪造请求。

但是输入验证码是一个糟糕的用户体验,所以必要的时候才使用,如支付交易等关键页面。


Referer check:HTTP 请求都得 referer 域中记录着请求来源,可通过检查请求来源,验证其是否合法。但是该方法具有一定局限性,referer 并不一定总等得到。

4.其他需要关注的攻击和漏洞

Error Code:也称错误回显,许多 Web 服务器默认是打开异常信息输出的。即服务器端未处理的异常堆栈信息会直接输出到客户端浏览器,这种方式虽然对程序调试和错误报告有好处,但同时也给黑客造成可乘之机。通过故意制造非法输入,使系统运行时出错,获得异常信息,从而寻找系统漏洞进行攻击。防御手段也很简单,通过配置 Web 服务器参数,跳转 500 页面(HTTP 响应 500 表示服务器内部错误)

到专门的错误页面即可。这个功能 Web 应用常用的 MVC 框架也可以做到。


HTML 注释:为了程序调试方便或其他不恰当的原因,有的时候程序开发人员会在 PHP,JSP 等服务器页面程序中使用 HTML 注释语法进程程序注释,这些 HTML 注释就会显示在客户端浏览器,给黑客攻击之便利。程序最终发布前需要进行代码 review 或自动扫描,避免 HTML 注释漏洞。


文件上传:网站上传功能,比如:设置头像,分享视频,上传附件等。如果上传的是可执行程序,并通过该程序获得服务器端命令的执行能力,那么攻击者几乎可以再服务器为所欲为,并以此为跳板攻击集群中其他服务器。最有效的防御手段是设置文件上传白名单,只允许上传可靠的文件类型。此外还可以修改文件名,使用专门的存储手段,保护服务器免收上传文件攻击。


路径遍历:攻击者在请求的 URL 中使用相对路径,遍历系统未开放的目录和文件。防御方法主要是将 JavaScript,css 等资源文件独立服务器,独立域名,其他文件不使用静态 URL 访问,动态参数不包含文件路径信息。

5.Web 应用防火墙

6.开源 Web 应用防火墙 ModSecurity

ModSecurity 是一个开源的 Web 应用防火墙,探测攻击并保护 Web 应用程序,即可以嵌入到 Web 应用服务器中,也可以作为一个独立的应用程序启动。ModSecurity 最早只是 Apache 的一个模块,现已经有 Java,.net 多个版本,并支持 Ngnix.


ModSecurity 采用处理逻辑与规则集合分离的架构模式。处理逻辑负责请求和响应的拦截过滤,规则加载执行等功能。而规则集合则负责对具体的攻击的规则定义,模式识别,防御策略等功能。处理逻辑比较稳定,规则集合需要不断针对漏洞进行升级,这是一种可扩展的架构设计。

7.网站的安全漏洞扫描

和电脑安全漏洞扫描一样,网站也需要安全漏洞扫描。


网站安全漏洞扫描工具是根据内置规则,模拟黑客攻击行为,用以发现网站安全漏洞的工具。许多大型网站的安全团队都有自己开发的漏洞扫描工具,不定期的对网站的服务器进行扫描,查漏补缺。


目前市场上也有很多的商用的网站安全漏洞扫描平台。


用户头像

张荣召

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
11.1安全架构:Web攻击与防护