所谓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注入和预防相关推荐

  1. concat mysql sql注入_sql注入-mysql注入基础及常用注入语句

    最近在教学中,关于SQL注入,总发现学生理解起来有些难度,其实主要的原因是对各类数据库以及SQL语句不熟悉,今天先介绍mysql注入需要掌握的基础, Mysql内置information_schema ...

  2. MySQL注入中报错的利用

    MySQL注入中报错的利用 在很多的情况 下我们不能直接方便的进行注入,于是有了BENCHMARK延迟注射,如果能得到MySQL的错误信息的话,现在又有了更方便的方法. 网上流传了两三种方法,以前我在 ...

  3. mysql内置变量_详解MySQL注入利用的变量

    MySQL注入数据库时,我们可以利用内置的变量来得到更多的mysql信息,下面就让我们一起来了解MySQL注入利用的变量. 当我们注射mysql库的输入点的时候,可以通过version()/user( ...

  4. mysql注入语句解释,MYSQL注入语句实用精解

    MYSQL注入语句实用精解 只讲字符型. order by XX Union select ..... 1' UNION SELECT 1,CONCAT(user(),0x3a,database(), ...

  5. mysql注入提取邮件_【sql注入教程】mysql注入直接getshell

    Mysql注入直接getshell的条件相对来说比较苛刻点把 1:要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道 2:gpc没有开启,开启了单引号被转义了,语句就不能正 ...

  6. jsp mysql 注入_由Jsp+Mysql注入到root权限的全程展 【好久没有安全类文章了,转一篇看看】...

    由Jsp+Mysql注入到root权限的全程展 最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整. 很多人可能都知道asp,php的编程要防止 ...

  7. php爆数据库,php+MySql注入非暴力爆数据库表段

    某群主发了一篇<php+MySql注入非暴力爆数据库表段>的科普,那样的都可以发,我只好也一起发科普了. Author:Juliet 科普: <php+MySql注入非暴力爆数据库表 ...

  8. php+mysql实例注入,PHP+MYSQL注入实例与防范措施总结

    实例 以下是我在服务器测试并成功注入的例子,大家看一下注入实例中的所有参数,有经验的程序员一看便知,如果不太明白可以自己实践一下,或者看一下注入原理(Php+Mysql注入专题教学),有任何疑问请联系 ...

  9. mysql注入扫描网站漏洞工具_sql注入点扫描工具下载-PHP+MYSQL网站注入扫描工具免费版 - 维维软件园...

    你想进行SQL网站注入扫描吗,那么你肯定需要使用专门的注入扫描工具了,请来下载PHP+MYSQL网站注入扫描工具试试吧,本工具是专门针对PHP网站所编写的一款小工具,软件界面是仿教程的hdsi中的PH ...

最新文章

  1. sqldbx oracle mysql
  2. 初学Java,如何成为年薪50万的程序员?
  3. Java中的深拷贝(深复制)和浅拷贝(浅复制)
  4. 在MacOS和iOS系统中使用OpenCV
  5. 【转】android开发 dts、各种接口porting----不错
  6. react 属性与状态 学习笔记
  7. 网络PXE启动WinPE,支持UEFI和LEGACY引导
  8. 阿里云大学Linux学习路线图(学+测)重磅上线!
  9. 复杂截面抗扭惯矩计算
  10. R语言--Cox模型校准曲线原理(二)算法
  11. 高情商技术管理者必备的5项特质
  12. 华为设备的安全配置console及telnet
  13. 淘宝闲鱼京东等电商api的简单调用
  14. 【收集】个人认为比较实用的手机软件
  15. r语言中将茎叶图旋转90度_R语言(02)绘图
  16. 基于图像的光照(Image-Based Lighting, IBL)概述
  17. Java基础之父类引用指向子类对象
  18. 开发简单Android聊天软件(7)
  19. js 正则例子 验证美国电话号码
  20. 支付宝事件溯源:2005年“雅巴“交易再回首

热门文章

  1. 佳能 cr2格式照片编辑 Photo Professional
  2. 第七届湖湘杯网络安全大赛 - 初赛writeup
  3. 让创业者惊讶的19个真相
  4. Java - 在进行数据库编程时,连接池有什么作用?
  5. 愿我们心中都有信念,眼里都有光芒
  6. Linux 添加ssh公钥
  7. 卡第那思SPM参与米思米客制化,为一站式购物理念提供支持
  8. 神兵利器—Android方法耗时统计插件Mirror(上)
  9. 黑白高端商务报告PPT模板
  10. openocd编译(windows, linux)