MySQL怎么避免SQL注入

访客6年前黑客资讯1431

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

相关文章

第六届全国网络安全大赛代码审计全解

 XDCTF是一项面向全国在校大学生的信息安全类竞赛,由西电信息安全协会与网络攻防实训基地联合举行。旨在增强学生对网络常识的爱好,进步学生学习网络技术的积极性,培育学生的立异 认识、协作精力和理论联系...

Web 服务器基准测验,nginx+php vs Apache+php

本次测验nginx+php与apache+php哪种组合的核算性能及稳定性更佳 操作系统:Centos6.4 x64 硬件环境:   服务器IP 硬件装备 人物 192.168.1.2 4中心 8G...

网页挂马常见缝隙剖析与检测

一、CVE-2019-8373缝隙的开始剖析 2019年8月15日,趋势科技发表了他们发现的一同浏览器缝隙进犯事情。在检测到的进犯流量中,进犯者运用了cve-2019-8373这个缝隙来进犯IE浏览器...

在Microsoft Edge中完成DOM树

DOM是Web渠道编程模型的根底,其规划和功用直接影响着浏览器管道(Pipeline)的模型,可是,DOM的前史演化却远不是一个简略的工作。 在曩昔三年中,微软的安全专家们早现已开端在Microsof...

30秒攻破恣意密码保护的PC:深化了解5美元黑客神器PoisonTap

近来,闻名硬件黑客Samy Kamkar运用5美元设备打造的黑客东西PoisonTap,只需30秒,就可以攻破设置有恣意暗码的电脑体系,并完成长时间后门装置。PoisonTap不是暴力破解暗码,而是...

怎么全面防护Webshell(下)?

 在进行查询时,最要害的部分之一是找到黑客的进口点,尤其是当运维团队将受进犯的服务器康复正常后,咱们意识到有许多的服务器现已被各种webshell、rootkits和暗码导出东西感染时。 需求快速的...