XSS
一、什么是XSS
XSS攻击:跨站脚本攻击(Cross-Site Scripting),为了不和层叠样式表(Cascading Style Sheets, css)的缩写混淆,故将跨站脚本攻击缩写为XSS 。XSS是一种常见的web安全漏洞,它允许攻击者将恶意代码植入到提供给其它用户使用的页面中 。不同于大多数攻击(一般只涉及攻击者和受害者),XSS涉及到三方,即攻击者、客户端与Web应用 。XSS的攻击目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息 。一旦获取到合法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互 。
XSS通常可以分为两大类:
- 存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等 。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击 。这个流程简单可以描述为:恶意用户的html输入Web程序->进入数据库->Web程序->用户浏览器 。
- 反射型XSS,主要做法是将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击 。
如图
二、如何预防XSS
答案很简单,坚决不要相信用户的任何输入,并过滤掉输入中的所有特殊字符 。这样就能消灭绝大部分的XSS攻击 。
目前防御XSS主要有如下几种方式:
- 过滤特殊字符
- 避免XSS的方法之一主要是将用户所提供的内容进行过滤(如上面的script标签) 。
- 使用HTTP头指定类型
- w.Header().Set("Content-Type","text/JAVAscript")
- 这样就可以让浏览器解析JavaScript代码,而不会是html输出 。
攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码 。
举例:' OR '1'='1
这是最常见的 SQL注入攻击,当我们输如用户名 admin ,然后密码输如' OR '1'=1='1的时候,我们在查询用户名和密码是否正确的时候,本来要执行的是SELECT * FROM user WHERE username='' and password='',经过参数拼接后,会执行 SQL语句 SELECT * FROM user WHERE username='' and password='' OR '1'='1',这个时候1=1是成立,自然就跳过验证了 。
如下图所示:
文章插图
但是如果再严重一点,密码输如的是';DROP TABLE user;--,那么 SQL命令为SELECT * FROM user WHERE username='admin' and password='';drop table user;--' 这个时候我们就直接把这个表给删除了 。
二、如何预防SQL注入
- 在Java中,我们可以使用预编译语句(PreparedStatement),这样的话即使我们使用 SQL语句伪造成参数,到了服务端的时候,这个伪造 SQL语句的参数也只是简单的字符,并不能起到攻击的作用 。
- 对进入数据库的特殊字符('"尖括号&*;等)进行转义处理,或编码转换 。
- 在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞 。网上有很多这方面的开源工具,例如sqlmap、SQLninja等 。
- 避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入 。
DDoS一、什么是DDOS
DDOS:分布式拒绝服务攻击(Distributed Denial of Service),简单说就是发送大量请求是使服务器瘫痪 。DDos攻击是在DOS攻击基础上的,可以通俗理解,dos是单挑,而ddos是群殴,因为现代技术的发展,dos攻击的杀伤力降低,所以出现了DDOS,攻击者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行攻击 。
推荐阅读
- 网站受到DooS攻击的表现
- 如何搭建合适的Web框架?
- 网站管理员和Web开发人员必读的.htaccess入门指南
- 购买茶叶时的八种常见心理
- 门磁开关的原理及常见故障
- 梦见野猪追我是什么预兆 梦见野猪追我攻击我是什么意思
- 秋季装修常见问题解决方案
- 梦见狮子攻击自己预兆 梦见狮子攻击自己没受伤
- 梦见乌鸦攻击自己 梦见乌鸦成群满天飞
- HTML5标签也可以DDoS攻击的新方法揭秘