MySQL怎么避免SQL注入

访客5年前黑客资讯1365

 假如您经过网页获取用户输入的 数据 并将其刺进一个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() 影响的字符或字符规模。

相关文章

看我怎么免费获取价值

大约两个月前,因为我需求发送一个15G的文件,我的一个朋友借给我了他的WeTransfer账户运用,我留心了一下,他的这种WeTransfer PLUS会员每年的注册费是120欧元。出于挖洞者的猎奇...

8个增强 PHP 程序安全的函数

 安满是编程十分重要的一个方面。在任何一种编程言语中,都供给了许多的函数或许模块来保证程序的安全性。在现代网站运用中,常常要获取来自世界各地用户的输入,可是,咱们都知道“永久不能信任那些用户输入的数据...

腐朽的苹果:对一大波iCloud垂钓网站的监测与剖析

国外的FireEye实验室有一套主动化体系,这套体系可以主动侦测最新注册的歹意域名。所谓的歹意域名,绝大部分都是假装成很多人知道的常用域名,以此来到达“歹意”的目的。比方说假装成苹果公司的域名——Fi...

小学生都会挖掘的JSON Hijacking实战利用

JSON Hijacking缝隙的具体使用,有点相似与CSRF,不过原理使用方法不同,在这边文章我侧重解说json跨域绑架的使用环境建立与方法。 0×01缝隙的发掘 一般发掘的过程中,burpsuit...

使用Google进行批量SQL注入扫描-黑客接单平台

0×01:简介 在运用GoogleHack进行SQL注入点查询时,手艺的办法一般为经过谷歌语法的inurl判别是否存在动态查询参数,然后对查询的网站url进行手艺判别是否存在SQL注入缝隙,如or 1...

浏览器进犯结构BeEF Part 4:绕过同源战略与浏览器署理

从这一章开端,正式进入了进犯阶段。BeEF供给了很多的进犯模块,能够直接运用。除了已有的模块,BeEF还供给了API,能够运用API来自行开发新的进犯模块。这一章,要介绍怎么绕过同源战略,还会介绍Be...