笔记-Java开发必须掌握的8种网站攻防技术
原文地址:https://mp.weixin.qq.com/s/QIqGGFJd8bcrHfJoSiwViA
XSS攻击
XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),它指的是攻击者在网页中嵌入恶意脚本程序, 当用户打开该网页时,脚本程序便开始在客户端的浏览器上执行,以盗取客户端cookie、 盗取用户名密码、下载执行病毒木马程序等等。
为了不和层叠样式表 (Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
XSS的防御
我们需要对用户输入的数据进行HTML转义处理。
如今很多开源的开发框架本身默认就提供HTML代码转义的功能,如流行的jstl、Struts等等,不需要开发人员再进行过多的开发。使用jstl标签进行HTML转义,将变量输出。
CSRF攻击
CSRF攻击的全称是跨站请求伪造(cross site request forgery), 是一种对网站的恶意利用。
攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。CRSF能做的事情包括利用你的身份发邮件、发短信、进行交易转账等等,甚至盗取你的账号。
尽管听起来跟XSS跨站脚本攻击有点相似,但事实上CSRF与XSS差别很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。
CSRF的防御
cookie设置为HttpOnly、增加token、通过Referer识别。
SQL注入攻击
就是通过把SQL命令伪装成正常的请求参数,传递到服务端,欺骗服务器最终执行恶意的SQL命令,达到入侵目的。
SQL注入原理
将输入参数作为SQL语句语法的一部分,而不仅仅是SQL参数。
SQL注入的防御
使用预编译语句PreparedStatement、使用ORM框架、避免密码明文存放、处理好相应的异常。
上传文件漏洞
文件名后缀、文件大小、文件重命名、根据起始字节判断文件类型(魔数)。
DDoS攻击
DDoS(Distributed Denial of Service),即分布式拒绝服务攻击。
DNS Query Flood
向被攻击的服务器发送海量的域名解析请求,通常,请求解析的域名是随机生成,大部分根本就不存在,并且通过伪造端口和客户端IP,防止查询请求被ACL过滤。
CC攻击
CC(Challenge Collapsar)攻击属于DDoS的一种,是基于应用层HTTP协议发起的DDos攻击,也被称为HTTP Flood。
攻击者通过控制的大量“肉鸡”或者利用从互联网上搜寻的大量匿名的HTTP代理,模拟正常用户给网站发起请求直到该网站拒绝服务为止。
另,GitHub遭受的DDoS攻击到底是个什么鬼?https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&mid=2650120826&idx=1&sn=bc7dc7bd910ae019e60e14b90ce2842b&chksm=f36bbf5bc41c364d0e20263d27c8c31899385d856067bf12ee97536e770abaa08df5c41bdd6d&scene=21#wechat_redirect