列举常见的WEB攻击,及解决方案
一、SQL注入
1、什么是SQL注入
- 攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。
2、如何预防SQL注入
- 使用预编译语句(PreparedStatement)
- 对进入数据库的特殊字符(’"尖括号&*;等)进行转义处理,或编码转换。
- 使用Mybatis框架时,使用#{},防止sql注入
二、XSS攻击
1、什么是XSS
- XSS攻击:跨站脚本攻击(Cross-SiteScripting)。XSS是一种常见的web安全漏洞,它允许攻击者将恶意代码植入到提供给其它用户使用的页面中。XSS的攻击目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息。一旦获取到合法用户的信息后,攻击者甚至可以假冒合法用户与网站进行交互。
2、XSS通常可以分为两大类
- 存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。这个流程简单可以描述为:恶意用户的Html输入Web程序->进入数据库->Web程序->用户浏览器。
- 反射型XSS,主要做法是将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击。
3、如何预防XSS
- 过滤特殊字符
避免XSS的方法之一主要是将用户所提供的内容进行过滤。 - 使用HTTP头指定类型
w.Header().Set(“Content-Type”,“text/javascript”)
让浏览器解析javascript代码,而不会是html输出。
三、DDOS
1、什么是DDOS
- DDOS:分布式拒绝服务攻击(DistributedDenialofService),简单说就是发送大量请求是使服务器瘫痪。
2、如何预防DDOS
- 利用DDoS防御产品的检测技术和清洗技术,检测技术就是检测网站是否正在遭受DDoS攻击,而清洗技术就是清洗掉异常流量。
四、CSRF
1、什么是CSRF
- CSRF(Cross-site request forgery),跨站请求伪造。
理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。
2、CSRF的原理
- 登录受信任网站A,并在本地生成Cookie。
- 在不登出A的情况下,访问危险网站B
CSRF 就是网站 A 对用户建立信任关系后,在网站 B 上利用这种信任关系,跨站点向网站 A 发起一些伪造的用户操作请求,以达到攻击的目的。
而之所以可以完成攻击是因为B向A发起攻击的时候会把A网站的cookie带给A网站,也就是说cookie已经不安全了。
3、如何预防CSRF攻击
-
Synchronizer Tokens
在表单里隐藏一个随机变化的token提交到后台进行验证,如果验证通过则可以继续执行操作
-
Hash加密cookie中csrf_token值
采用的hash加密方法是JS实现Java的HashCode方法,得到hash值。前端向后台传递hash之后的csrf_token值和cookie中的csrf_token值,后台拿到cookie中的csrf_token值后得到hashCode值然后与前端传过来的值进行比较,一样则通过。
五、越权访问漏洞防护
1、什么是越权访问
- 越权访问(BrokenAccessControl,简称BAC)是Web应用程序中一种常见的漏洞,分为垂直越权访问和水平越权访问。
- 垂直越权是指不同用户级别之间的越权,如普通用户执行管理员用户的权限。
- 水平越权是指相同级别用户之间的越权操作。
2、Web应用程序如果存在越权访问漏洞,可能导致以下危害:
- 1)导致任意用户敏感信息泄露;
- 2)导致任意用户信息被恶意修改或删除。
3、如何预防越权访问
- 配置FILTER拦截器,对请求所有URL进行拦截,对于需要进行授权的URL进行权限校验,防止用户越权访问系统资源。
六、文件上传漏洞
- 前台仅使用JS对文件后缀做了过滤,这只能针对普通的用户,而恶意攻击者完全可以修改表单去掉JS校验。
项目中涉及上传下载未对文件大小以及类型进行验证,可能导致不良用户上传有害文件,危害服务器
解决方案:文件上传时在前台对文件后缀名进行验证,为避免通过特殊手段绕过了前端验证,在文件保存时再进行一次验证,即前后台同时验证的道理。
七、敏感信息泄露
- 敏感信息泄露漏洞,是一种通过提交错误请求,使系统出现异常处理并报错,并且将系统程序、配置 等敏感信息泄露出来的漏洞。工程师发现系统搜索功能模块中普遍将系统的报错通printStackTrace 方法进行反馈,可造成报错信息如实的返回到前端。
攻击者可以利用此漏洞收集系统报错中泄露的数据信息,包括处理函数,系统版本等等。可以通过此 类问题获得深入和更有目的性攻击的条件。
解决方案:建议统一处理错误页面,将错误信息存储在日志中。
八、短信轰炸
- 发送短信验证码未进行次数限制,可以不断发送短信验证码,导致一定的经济损失。
解决方案:建议对发送的短信验证码进行频率限制,一段时间内仅仅发送多少条短信。
九、URL跳转漏洞
- 任意URL恶意跳转可能会导致钓鱼等风险。
标签:网络安全,XSS,面试题,Java,攻击,用户,CSRF,攻击者,越权 From: https://blog.csdn.net/Hacker_Nightrain/article/details/143575482解决方案:改变传值方式,可以在前台传入对应type,根据type跳转到页面