最常见的Web网站攻击手段
网络安全不容忽视,整理常见的Web网站攻击手段如下:
- XSS攻击
- CSRF攻击
- SQL注入攻击
- DDoS攻击
- 文件上传漏洞
一、XSS攻击
XSS(Cross Site Scripting)跨站脚本攻击,为了不与层叠样式表(CSS)混淆,故将跨站脚本攻击缩写为XSS。原理即在网页中嵌入恶意脚本,当用户打开网页时,恶意脚本便开始在用户浏览器上执行,以盗取客户端cookie、用户名、密码,甚至下载木马程式,危害可想而知。
场景1:以一个表单输入举例说明
<input type="text" name="firstname" value="">
倘若用户在表单中输入恶意脚本,即对输入做些处理,如:
<input type="text" name="firstname" value=""/><script>alert("longlong")</script><!-- "/>
其实攻击的形式还有很多,比如将脚本伪装进URL,然后将URL进行URLEncode编码,当用户点击链接后,脚本就会被执行。
XSS防范:
之所以会发生XSS攻击,是因为用户输入的数据变成了代码, 因此需要对用户输入的数据进行HTML转义处理,将输出的“尖括号”、“单引号”、“引号”之类的特色符号进行转义。
HTML | HTML转义后的字符 |
---|---|
< | < |
> | > |
‘ | & |
“ | " |
场景2:一个博客网站,我发表一篇博客,其中嵌入脚本,脚本内容:获取cookie,发送到我的服务器(服务端配合跨域)。有人查看这篇博客,我轻松收割访问者的cookie。
XSS预防:
替换特殊字符,如< 变成 < ; >变成 > ;
<script>
变成 & ltscript >;直接显示,而不会作为脚本执行。前端要做替换,后端也要做替换,双重保证。
二、CSRF攻击
CSRF攻击的全称跨站请求伪造(Cross Site Request Forgery),通过盗用用户的身份信息,以你的名义向第三方网站发起恶意请求,若转账、盗取账号、发信息、邮件。流程框图如下:
所以CSRF攻击一般场景是:
1、用户登录受信站点A,生成本地cookie;
2、用户没有退出站点A,访问了恶意站点B。
CSRF攻击举例:
恶意转账
如果银行系统利用上述接口转账,就用可能会被恶意网站攻击。当然上面仅是举例,银行安全等级不至于这么低,使用GET转账。比如银行升级接口为POST提交,当然这也不能解决根本的安全问题,黑客照样能够利用XSS漏洞植入恶意代码,请求转账接口。
真实银行交易系统付款会有USB key、验证码、登陆密码、支付密码等一系列屏障,支付流程要复杂得多,安全系数也高很多。
CSRF攻击防御:
1、将cookie设置为HttpOnly
CSRF攻击很大程度是利用了浏览器的cookie,为了防止站内XSS漏洞,cookie设置HttpOnly属性,JS脚本就无法读取到cookie中的信息,避免攻击者伪造cookie的情况出现。
设置方式参考:https://www.cnblogs.com/relucent/p/4171478.html
2、增加token
CSRF攻击之所以成功,主要是攻击中伪造了用户请求,而用户请求的验证信息都在cookie中,攻击者就可以利用cookie伪造请求通过安全验证。因此抵御CSRF攻击的关键就是,在请求中放入攻击者不能伪造的信息,并且信息不在cookie中。
鉴于此,开发人员可以在http请求中以参数的形式加一个token,此token在服务端生成,也在服务端校验,服务端的每次会话都可以用同一个token。如果验证token不一致,则认为至CSRF攻击,拒绝请求。
表单中增加一个隐藏域:
<input type="hidden" name="_token" value="tokenvalue"/>
在服务端session中添加token:
HttpSession session = request.getSession();
Object token = session.getAttribute("_token");
if(token == null || "".equals(_token){session.setAttribute("_token",UUID.randomUUID().toString());
}
3、通过Referer识别
Http头中有一个字段Referer,它记录了Http请求来源地址。但是注意不要把Rerferer用在身份验证或者其他非常重要的检查上,因为Rerferer非常容易在客户端被改变。
(火狐的一个插件RefControl修改Referer引用)
三、SQL注入攻击
SQL注入攻击就是把SQL命令伪装成正常的http请求参数,传递到服务端,欺骗服务器最终执行恶意的SQL命令,达到入侵目的。
SQL注入攻击原理如下:
String sql = "select * from user where nick = '" + nickname + "' and password = '" + password + "'";Statement st = (Statement) conn.createStatement();ResultSet rs = st.executeQuery(sql);
上述代码是校验用户名、密码是否有效,查询结果记录数大于0则表示有效。正常逻辑是用户名、密码匹配数据库记录;但攻击者会利用http参数进行SQL注入攻击,即password参数输入’ or ‘1’ = '1,导致SQL语句变为
select * from user where nick = 'zhangshan' and password = '' or '1' = '1';
上述语句的执行结果就相当于用户能够绕过登录验证。
SQL注入防范:
1、使用预编译语句
Java原生的预编译语句为PreparedStatement,是Java.sql中的一个接口,继承自Statement。
SQL执行 | 说明 |
---|---|
Statement | SQL语句(包含参数)会直接发给DBMS,编译后再执行 |
PreparedStatement | SQL语句(参数为占位符?)发给DBMS编译,DBMS直接运行编译后的SQL语句,参数会在执行阶段传入 |
2、使用ORM框架
ORM框架如MyBatis http://www.mybatis.org/mybatis-3/,在Mapper XML配置的语句如下:
<select id="selectPerson" parameterType="int" resultType="hashmap">SELECT * FROM PERSON WHERE ID = #{id}
</select><select id="selectPerson" parameterType="int" resultType="hashmap">SELECT * FROM PERSON WHERE ID = ${id}
</select>
有两种参数传递的方式:#{}、${},两者的差异就在于,#是在预编译后,执行语句时再传递参数,$是先传递参数,然后再执行编译,再执行语句,SQL注入就是利用这种方式。
SQL注入攻击总结:
主要是就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如select * from test where username=”wuxu” or 1=1,这样会使用户跳过密码直接登录,具体解决方案:
- 特殊字符过滤,不要用拼接字符串的方法来凑sql语句。
- 对sql语句进行预编译,比如java的preparedstatement。
- 关闭错误信息,攻击者可能会通过不断的尝试来得到数据库的一些信息,所以关闭错误信息变得重要起来。
- 客户端对数据进行加密,使原来传进来的参数因为加密而被过滤掉。
- 控制数据库的权限,比如只能select,不能insert,防止攻击者通过select * from test ;drop tables这种操作
四、DDoS攻击
DDoS(Distributed Denial Of Service)攻击即分布式服务攻击,借助公共网络,将数量庞大的计算器设备(肉鸡)联合起来,对一个或多个目标发动攻击,从而达到瘫痪目标主机的目的。
DDoS攻击手段
1、SYN flood
攻击者伪造大量无效IP,不断与目标主机建立TCP链接,导致服务器维护了一个非常大的链接等待列表,占用大量系统资源,直至新链接无法建立。
这种攻击是利用了TCP三次握手的异常处理机制,即第三次握手,服务端在没有收到客户端ACK报文时,服务端会进行多次SYN+ACK重试,然后维护一个等待列表,而系统会为即将建立的TCP连接分配一部分资源。资源耗尽,系统也就无法再建立TCP连接。
2、DNS query flood
攻击者伪造大量无效域名,发送给目标服务器解析,这些域名均为无效域名,导致DNS服务器耗用大量资源去处理这些无效域名,造成DNS解析域名超时,达到攻击目的。
被攻击的原因
服务器带宽不足,不能挡住攻击者的攻击流量
预防
最直接的方法增加带宽。但是攻击者用各地的电脑进行攻击,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。
云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源
五、文件上传漏洞
倘若web网站没有对文件类型进行严格的校验,导致可执行文件上传到了服务器,恶意程序就会执行。
为了避免恶意文件上传,需要对上传文件类型进行白名单校验,并限制文件大小,上传文件进行重命名。有关文件类型的校验,需要去了解下魔数(magic number)这个概念,这里不做引伸。
参考链接: 总结几种常见web攻击手段及其防御方式
最常见的Web网站攻击手段相关推荐
- 常见的Web网站防御攻击方法
常见的互联网网站攻击防御方式 1.xss跨站脚本攻击 2.未授权访问 3.登录处明文传输 4.文件上传漏洞 5.跨站伪造请求 6.不安全的链接 7.典型漏洞介绍 7.1XSS跨站脚本攻击 7.2SQL ...
- 常见的Web前端攻击
每天一个前端面试题之 常见的Web前端攻击 一.CFRS 跨站请求伪造,Cross-site request forgery,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web ...
- 安全漏洞防御(9)常见的网站攻击手段及预防措施
XSS XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表 (Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS ...
- 常用网站攻击手段及防御方法
常见的攻击手段--XSS XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),为不跟层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻 ...
- 服务器防御基础(常见的几种攻击手段以及应对方式)
前言 互联网世界鱼龙混杂,我们的网站放在internet上除了网站用户和会员会造访,还会有一群觊觎网站利益服务器功能的人在暗中观察,抓住机会找到漏洞就把网站一举拿下,从而盗取数据或是利用服务器资源作为 ...
- 网络安全之几种常见的hei客攻击手段
常见的攻击手段有:ARP攻击,DoS攻击,DDoS攻击,SYN攻击,缓冲区溢出攻击,等等.下面我将对这几种攻击做个介绍. 1 ARP攻击 ARP(Address Resolution Protocol ...
- DDOS攻击详解——常见网站攻击手段原理与防御
DDOS攻击为分布式拒绝服务攻击. DDOS攻击分类: 网络层攻击: SYN-flood:利用TCP建立连接时3次握手的"漏洞",发送源地址虚假的提交,永远无法完成三次握手.占满系 ...
- 45-互联网安全架构-Web常用攻击手段之XSS脚本SQL注入攻击
文章目录 1. 什么是XSS攻击&XSS攻击应用场景 2. XSS脚本攻击原理分析 3. 使用过滤器防御XSS攻击 4. 使用#传递参数防御SQL注入攻击 1. 什么是XSS攻击&XS ...
- 黑客网站攻击的主要手段
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 黑客与白帽子 有的童鞋觉得黑客和白帽子是同一回事儿,其实不然:而且,他们的工作方式与目标也有很 ...
- WEB网站常见受攻击方式及解决办法
一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的 ...
最新文章
- [unreal4入门系列之六] 常用的按键和快捷键
- 互联网1分钟 |1214
- 文本处理工具 awk-- 报告生成器
- selenium自动加载Flash
- mysql 定时任务实例_mysql定时任务与存储过程实例
- R语言学习笔记(4)
- 让这三个月来的更猛烈些吧,前端react同构项目
- Mac安装protobuf 流程
- 机器学习面试-处理回归问题
- git pull checkout后文件权限变更
- win10安装VS2015
- 2018年将会改变人工智能的5个大数据趋势
- 华为matebook13 win10系统重置登录密码
- 万字文肝Python基础知识
- 通过PMP认证后,项目经理薪资待遇如何?
- 2022.11.11 CodeForces1324D Pair of Topics
- 调查问卷的反向计分题数据如何录入?
- 虚拟机改IP地址的方式
- 中超各主场巡礼(国安观赛指南)
- java中commons意思_java的Commons包简介
热门文章
- 【MATLAB】铰链四杆机构运动分析(GUI设计)
- OA“失身”缘于难挡ERP的色诱?
- VScode前进后退快捷键
- 搞个笑?用Verilog产生一个三角波吧!
- python if实现对话_Python生成微信对话生成器(四)
- 机器学习中的数学——Nesterov Momentum
- CS5218: DP转HDMI 4K30HZ转换方案
- songshu-video-uniapp-YYC松鼠短视频前端源码-开源--优雅草科技官方发布
- EAccessViolation
- Navicat提示Access violation at address ... in module ‘navicat.exe‘.Write of address ...