最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
简单的js防止SQL注入的函数
时间:2016-04-18 编辑:简简单单 来源:一聚教程网
SQL注入攻击的总体思路:
发现SQL注入位置;判断服务器类型和后台数据库类型;确定可执行情况
对于有些攻击者而言,一般会采取sql注入法。下面我也谈一下自己关于sql注入法的感悟。
注入法:
从理论上说,认证网页中会有型如:
select * from admin where username=’XXX’ and password=’YYY’ 的语句,若在正式运行此句之前,如果没有进行必要的字符过滤,则很容易实施SQL注入。
如在用户名文本框内输入:abc’ or 1=1– 在密码框内输入:123 则SQL语句变成:
select * from admin where username=’abc’ or 1=1 and password=’123’ 不管用户输入任何用户名与密码,此语句永远都能正确执行,用户轻易骗过系统,获取合法身份。
猜解法:
基本思路是:猜解所有数据库名称,猜出库中的每张表名,分析可能是存放用户名与密码的表名,猜出表中的每个字段名,猜出表中的每条记录内容。
还有一种方式可以获得你的数据库名和每张表的名。
就是通过在形如:http://www. .cn/news?id=10’的方式来通过报错获得你的数据库名和表名!
前端js防止注入解决办法:
1.URL地址防注入:
//过滤URL非法SQL字符
var sUrl=location.search.toLowerCase();
var sQuery=sUrl.substring(sUrl.indexOf("=")+1);
re=/select|update|delete|truncate|join|union|exec|insert|drop|count|'|"|;|>|<|%/i;
if(re.test(sQuery))
{
alert("请勿输入非法字符");
location.href=sUrl.replace(sQuery,"");
}
2.输入文本框防注入:
//防止SQL注入
function AntiSqlValid(oField )
{
re= /select|update|delete|exec|count|'|"|=|;|>|<|%/i;
if ( re.test(oField.value) )
{
//alert("请您不要在参数中输入特殊字符和SQL关键字!"); //注意中文乱码
oField.value = ";
oField.className="errInfo";
oField.focus();
return false;
}
在需要防注入的输入文本框添加如下方法
txtName.Attributes.Add("onblur", "AntiSqlValid(this)");//防止Sql脚本注入
后面服务器防sql注入
1.全站入口处检查get_magic_quotes_gpc()是否开启,如果没开启,则全站对request(包括get、post等,特别是get)进来的数据进行检查,出现add、select、update等字符时提示错误。
2.把错误提示给关了,error_reporting(E_ALL & ~E_NOTICE);// 不显示警告
ini_set(‘display_errors’,’Off’);
以防出现警告和错误提示时把网站的路径显示出来。
3.因为那网站没有做伪静态,出现了xxx.com/?id=数字的情况,也就是说存在SQL注入漏洞(盲注)的可能性,应对方法先判断get(id)进来的是否是数字,如果不是直接提示错误,如果是,则intval转换,再进行mysql_query(mysql_query好处是只进行一次查询后自动关闭)。
4.页面异常导致本地路径泄漏。设置出现异常错误时的跳转页面,尽量不出现空白页或500之类的错误页。每次查询都要判断假如无结果时的应对办法。
5.总是提示有漏洞:跨站脚本攻击(XSS)。按上面1、2、3步骤后还是提示有此漏洞,马上进行改正,字符串的话用htmlspecialchars更替html代码。
6.后台路径屏蔽搜索引擎,登录时先检查ID是否正确,如果正确,再MD5加密密码进行查询,2次sql查询加强安全。
相关文章
- HTML简单购物数量小程序代码展示 10-31
- html canvas实现弹幕功能 10-31
- HTML中空格表示的意义 10-31
- html area标签解读 10-31
- html使用表单标签实现注册页面代码展示 10-31
- 使用HTML截图并保存为本地图片的代码展示 10-31