网站应用攻击与防御

XSS 攻击

XSS 攻击即夸站点脚本攻击(Cross Site Script),指黑客通过篡改网页,注入恶意 HTML 脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。

常见的 XSS 攻击类型有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击的目的。

反射型 XSS 攻击

另一种 XSS 攻击是持久型 XSS 攻击,黑客提交含有恶意脚本的请求,保存在被攻击的 Web 站点的数据库中,用户浏览网页时,恶意脚本被包含在正常页面中,达到攻击的目的。

持久型 XSS 攻击

XSS 防攻击的主要方式有如下两种:

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

  • HttpOnly
    浏览器禁止页面 JavaScript 访问带有 HttpOnly 属性的 Cookie。HttpOnly 并不是直接对抗 XSS 攻击的,而是防止 XSS 攻击窃取 Cookie。对于存放敏感信息的 Cookie,如用户认证信息等,可通过对该 Cookie 添加 HttpOnly 属性,避免被攻击脚本窃取。

注入攻击

注入攻击主要有两种形式,SQL 注入攻击和 OS 注入攻击。SQL 注入攻击为攻击者在 HTTP 请求中注入恶意 SQL 命令,服务器用请求构造参数构造数据库 SQL 命令时,恶意 SQL 被一起构造,并在数据库执行。

SQL 注入攻击

SQL 注入攻击需要攻击者对数据库结构有所了解才能进行,攻击者获取数据库表结构信息的手段有如下几种:

  • 开源
    如果网站基于开源软件搭建,那么网站数据库结构就是公开的,攻击者可直接获得。

  • 错误回显
    如果网站开启错误回显,即服务器内部 500 错误会显示到浏览器上。攻击者通过故意构造非法参数,使服务器异常信息输出到浏览器端,为攻击者猜测数据库表结构提供了便利。

  • 盲注
    如果网站关闭错误回显,攻击者根据页面变化情况判断 SQL 语句的执行情况,据此猜测数据库表结构,这种攻击方式难度比较大。

防御 SQL 注入攻击首先要避免被攻击者猜测到表名等数据库表结构信息,此外还可以采用如下方式:

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

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

除了 SQL 注入,攻击者还根据具体应用,注入 OS 命令、编程语言代码等,利用程序漏洞,达到攻击目的。

CSRF 攻击

CSRF(Cross Site Request Forgery,跨站点请求伪造),攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易等。CSRF 的主要手法是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。其核心是利用了浏览器 Cookie 或服务器 Session 策略,盗取用户身份。

CSRF 攻击

CSRF 的防御手段主要是识别请求者身份。主要有下面几种方法:

  • 表单 Token
    CSRF 是一个伪造用户请求的操作,所以需要构造用户的请求的所有参数才可以。表单 Token 通过在请求参数中增加随机数的方法来阻止攻击获得所有请求参数:在页面表单中增加一个随机数作为 Token,每次响应页面的 Token 都不相同,从正常页面提交的请求会包含该 Token 值,而伪造的请求无法获得该值,服务器检查请求参数中 Token 的值是否存在并且正确以确定请求提交者是否为伪造的。

  • 验证码
    验证码是一种更加简单有效的手段,即请求提交时,需要通过用户输入验证码。

  • Referer check
    HTTP 请求头的 Referer 域中记录着请求来源,可通过检查请求来源,验证其是否合法。很多网站使用这个功能实现图片防盗链(如果图片访问的页面来源不是来自自己网站的网页就拒绝)。

其他攻击和漏洞

  • Error Code
    错误回显信息,许多 Web 服务器会默认打开异常信息输出,即服务器端未处理的异常堆栈信息会直接输出到客户端浏览器。黑客可以通过故意制造非法输入,使系统运行时出错,获得异常信息,从而寻找系统漏洞进行攻击。防御手段:通过配置 Web 服务器参数,跳转到 500 页面到专门的错误页面即可。Web 应用常用的 MVC 框架也有这个功能。

  • HTML 注释
    HTML 注释会显示在客户端浏览器。

  • 文件上传
    攻击者通过上传可执行程序以获得服务器端命令执行能力。有效的手段是设置上传文件白名单,只允许上传可靠的文件类型。此外还可以修改文件名,使用专门的存储等手段。

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

Web 应用防火墙

ModSecurity 是一个开源的 Web 应用防火墙,探测攻击并保护 Web 程序,能够统一拦截请求,过滤恶意参数,自动消毒,添加 Token 等。既可以嵌入到 Web 应用服务器中,也可以作为一个独立的应用程序启动。

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

ModSecurity 架构原理

网站安全漏洞扫描

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容