mysql注入和预防
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。
输入的用户名必须为字母、数字及下划线的组合,且用户名长度为 8 到 20 个字符之间:
if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))
{$result = mysqli_query($conn, "SELECT * FROM users WHERE username=$matches[0]");
}else
{echo "username 输入异常";
}
防止SQL注入,我们需要注意以下几个要点:
- 1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
- 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
- 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
- 4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
- 5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
- 6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。
防止SQL注入
在脚本语言,如Perl和PHP你可以对用户输入的数据进行转义从而来防止SQL注入。
PHP的MySQL扩展提供了mysqli_real_escape_string()函数来转义特殊的输入字符。 、
if (get_magic_quotes_gpc())
{$name = stripslashes($name);
}
$name = mysqli_real_escape_string($conn, $name);mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");
Like语句中的注入
like查询时,如果用户输入的值有"_"和"%",则会出现这种情况:用户本来只是想查询"abcd_",查询结果中却有"abcd_"、"abcde"、"abcdf"等等;用户要查询"30%"(注:百分之三十)时也会出现问题。
在PHP脚本中我们可以使用addcslashes()函数来处理以上情况,如下实例:
$sub = addcslashes(mysqli_real_escape_string($conn, "%something_"), "%_");
// $sub == \%something\_mysqli_query($conn, "SELECT * FROM messages WHERE subject LIKE '{$sub}%'");
addcslashes() 函数在指定的字符前添加反斜杠。
语法格式:
addcslashes(string,characters)
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
characters | 可选。规定受 addcslashes() 影响的字符或字符范围。 |
mysql注入和预防相关推荐
- concat mysql sql注入_sql注入-mysql注入基础及常用注入语句
最近在教学中,关于SQL注入,总发现学生理解起来有些难度,其实主要的原因是对各类数据库以及SQL语句不熟悉,今天先介绍mysql注入需要掌握的基础, Mysql内置information_schema ...
- MySQL注入中报错的利用
MySQL注入中报错的利用 在很多的情况 下我们不能直接方便的进行注入,于是有了BENCHMARK延迟注射,如果能得到MySQL的错误信息的话,现在又有了更方便的方法. 网上流传了两三种方法,以前我在 ...
- mysql内置变量_详解MySQL注入利用的变量
MySQL注入数据库时,我们可以利用内置的变量来得到更多的mysql信息,下面就让我们一起来了解MySQL注入利用的变量. 当我们注射mysql库的输入点的时候,可以通过version()/user( ...
- mysql注入语句解释,MYSQL注入语句实用精解
MYSQL注入语句实用精解 只讲字符型. order by XX Union select ..... 1' UNION SELECT 1,CONCAT(user(),0x3a,database(), ...
- mysql注入提取邮件_【sql注入教程】mysql注入直接getshell
Mysql注入直接getshell的条件相对来说比较苛刻点把 1:要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道 2:gpc没有开启,开启了单引号被转义了,语句就不能正 ...
- jsp mysql 注入_由Jsp+Mysql注入到root权限的全程展 【好久没有安全类文章了,转一篇看看】...
由Jsp+Mysql注入到root权限的全程展 最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整. 很多人可能都知道asp,php的编程要防止 ...
- php爆数据库,php+MySql注入非暴力爆数据库表段
某群主发了一篇<php+MySql注入非暴力爆数据库表段>的科普,那样的都可以发,我只好也一起发科普了. Author:Juliet 科普: <php+MySql注入非暴力爆数据库表 ...
- php+mysql实例注入,PHP+MYSQL注入实例与防范措施总结
实例 以下是我在服务器测试并成功注入的例子,大家看一下注入实例中的所有参数,有经验的程序员一看便知,如果不太明白可以自己实践一下,或者看一下注入原理(Php+Mysql注入专题教学),有任何疑问请联系 ...
- mysql注入扫描网站漏洞工具_sql注入点扫描工具下载-PHP+MYSQL网站注入扫描工具免费版 - 维维软件园...
你想进行SQL网站注入扫描吗,那么你肯定需要使用专门的注入扫描工具了,请来下载PHP+MYSQL网站注入扫描工具试试吧,本工具是专门针对PHP网站所编写的一款小工具,软件界面是仿教程的hdsi中的PH ...
最新文章
- sqldbx oracle mysql
- 初学Java,如何成为年薪50万的程序员?
- Java中的深拷贝(深复制)和浅拷贝(浅复制)
- 在MacOS和iOS系统中使用OpenCV
- 【转】android开发 dts、各种接口porting----不错
- react 属性与状态 学习笔记
- 网络PXE启动WinPE,支持UEFI和LEGACY引导
- 阿里云大学Linux学习路线图(学+测)重磅上线!
- 复杂截面抗扭惯矩计算
- R语言--Cox模型校准曲线原理(二)算法
- 高情商技术管理者必备的5项特质
- 华为设备的安全配置console及telnet
- 淘宝闲鱼京东等电商api的简单调用
- 【收集】个人认为比较实用的手机软件
- r语言中将茎叶图旋转90度_R语言(02)绘图
- 基于图像的光照(Image-Based Lighting, IBL)概述
- Java基础之父类引用指向子类对象
- 开发简单Android聊天软件(7)
- js 正则例子 验证美国电话号码
- 支付宝事件溯源:2005年“雅巴“交易再回首