MySQL怎么避免SQL注入

访客5年前黑客资讯1367

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

相关文章

怎么避免网站要害数据被人歹意收集

 昨天晚上花了几个小时用Jsoup写了一个网站收集器,帮一个高中同学收集了一个工业信息门户上的芯片待售信息。网站上显现的数据多达60w+条, 我写的程序跑了7个小时只收集了一半,算是能够交差了。 这现...

Ostap:超过34,000行的JavaScript下载器用于TrickBot分发活动中-黑客接单平台

要挟行为者在损害体系时,一般需求考虑怎么进入方针网络才干防止被检测到,而传递歹意附件的网络垂钓邮件往往就充当了初始感染前言的人物。 此外,攻击者还需求一种办法,在安全监控产品的眼皮底下履行代码。最常见...

Web版勒索软件CTB-Locker PHP源码现身GitHub

勒索软件CTB-Locker呈现其Web演化版别,可感染网页站点。据剖析,其编码为选用PHP编写,现在源码已被保管至GitHub上。 Web版勒索软件CTB-Locker的初次呈现 就在本年西方情人节...

HTTPie:WEB开发调试东西

还在用wget和curl?试试HTTPie吧  :) HTTPie (读作aych-tee-tee-pie)是指令行方法的HTTP客户端。可经过简略的http指令,可合作语法发送恣意HTTP恳求数据,...

ASP.NET网站管理工具装备办法

注意事项, 你登录到期2003时的用户名,及其相关权限,添加到 sql server C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/CONFIG/mach...

SQL 注入有病,安全专家有何良方?

SQL 注入进犯现状 SQL 注入进犯是一个十分老的进犯办法,因为许多运用程序都存在 SQL 注入缝隙而且 SQL 注入办法与手法变化无常,虽然大型企业一般都花巨资购买多种安全维护体系,可是 SQL...