MySQL怎么避免SQL注入

访客5年前黑客资讯1366

 假如您经过网页获取用户输入的 数据 并将其刺进一个MySQL数据库,那么就有可能发生SQL注入安全的 问题 。
本章节将为咱们介绍怎么避免SQL注入,并经过脚原本过滤SQL中注入的字符。 

所谓SQL注入,便是经过把SQL指令刺进到Web表单递送或输入 域名 或页面恳求的查询字符串,终究到达诈骗 服务 器 履行歹意的SQL指令。


咱们永久不要信赖用户的输入,咱们有必要确定用户输入的数据都是不安全的,咱们都需求对用户输入的数据进行过滤处理。 
以下实例中,输入的用户名有必要为字母、数字及下划线的组合,且用户名长度为 8 到 20 个字符之间: 
if (preg_match("/^w{8,20}$/", $_GET['username'], $matches)) { $result = mysql_query("SELECT * FROM users WHERE username=$matches[0]"); } else { echo "username 输入反常"; } 让咱们看下在没有过滤特别字符时,呈现的SQL状况: 
// 设定$name 中刺进了咱们不需求的SQL句子 $name = "Qadir'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 以上的注入句子中,咱们没有对 $name 的变量进行过滤,$name 中刺进了咱们不需求的SQL句子,将删去 users 表中的一切数据。 
在PHP中的 mysql_query() 是不允许履行多个SQL句子的,但是在 SQLite 和 PostgreSQL 是能够一起履行多条SQL句子的,所以咱们对这些用户的数据需求进行严厉的验证。 
避免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扩展供给了mysql_real_escape_string()函数来转义特别的输入字符。 
if (get_magic_quotes_gpc()) { $name = stripslashes($name); } $name = mysql_real_escape_string($name); mysql_query("SELECT * FROM users WHERE name='{$name}'"); Like句子中的注入 
like查询时,假如用户输入的值有"_"和"%",则会呈现这种状况:用户原本仅仅想查询"abcd_",查询成果中却有"abcd_"、"abcde"、"abcdf"等等;用户要查询"30%"(注:百分之三十)时也会呈现问题。 
在PHP脚本中咱们能够运用addcslashes()函数来处理以上状况,如下实例: 
$sub = addcslashes(mysql_real_escape_string("%something_"), "%_"); // $sub == %something_ mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'"); addcslashes() 函数在指定的字符前增加反斜杠。 
语法格局: 
addcslashes(string,characters) 参数    描述 string    必需。规则要查看的字符串。 characters    可选。规则受 addcslashes() 影响的字符或字符规模。

相关文章

用零宽度字符水印揭穿泄密者身份

零宽度字符是躲藏不显现的,也是不行打印的,也便是说这种字符用大多数程序或编辑器是看不到的。最常见的是零宽度空格,它是Unicode字符空格,就像假如在两个字母间加一个零宽度空格,该空格是不行见的,表面...

对DOTNET(.NET)中的歹意长途拜访进程进行剖析(下)

上一篇说到代码会有许多重复,由于它在每个if句子(共有五个if句子,会在下篇讲到)中都会调用一个函数。但是,细节却略有不同,其间给定的办法称号和函数的参数都会显现函数的内容。 第一个if句子在程序会集...

运用Docker建立Web缝隙测验环境

因为一向在做 Web 缝隙扫描器的开发, 那么就必定少不了 Web 的缝隙测验环境, 其中就包含 bWAPP、DVWA、OWASP WebGoat 等这些国际品牌。 这些缝隙环境一般建立比较繁琐, 并...

带外通道技术(OOB)总结-黑客接单平台

在浸透中,常常碰到封闭回显的缝隙,常见的XXE盲注,SQL盲注,反序列号无回显,这个时分常用到OOB带外数据通道,带外通道技能(OOB)让进犯者可以经过另一种方法来承认和运用所谓的盲目(blind)的...

Faraday:一款多功能协同式浸透测验东西&缝隙办理渠道

今日给咱们介绍的是一款名叫Fareday的东西,它是一款协同式多功能浸透测验及缝隙办理渠道。 新版本的Faraday引入了一个新的概念,即IPE(整合型浸透测验环境),也便是所谓的多用户浸透测验IDE...

谈谈Json格式下的CSRF攻击-黑客接单平台

一、CSRF缝隙简介 csrf缝隙的成因便是网站的cookie在浏览器中不会过期,只需不封闭浏览器或许退出登录,那今后只需是拜访这个网站,都会默许你现已登录的状况。而在这个期间,进犯者发送了结构好的c...