sql注入及其防范

幸运草
幸运草
幸运草
896
文章
3
评论
2020年3月31日21:28:13 评论 324

假设管理员表( administrators )为:

登录表单类似这样:

<form  action=”check.php”  method=”post”>

用户名:<input type=”text”  name=”user”  />

用户名:<input type=”password”  name=”pass”  />

<input  type=”submit”  value=”登录”  />

</form>

则后台登录验证程序(check.php)类似这样:

$user = $_POST[‘user’];

$pass = $_POST[‘pass’];

$sql  =  “select  *  from  administrators where  admin_user = ‘$user’  and  admin_pass = ‘$pass’  “;

$result = mysql_query($sql);

if($result === false){//执行错误

echo “登录失败”;

}

else{

$count  = mysql_num_row($result);//数据条数

if($count  == 1){

echo “登录成功”;

}

else{

echo  “登录失败”;

}

}

看这个程序,似乎天衣无缝。

但:

万能用户名的使用:

请看我填写一个“万能用户名”:  admin’#

密码随便(比如111)。则该sql语句就变成类似这样:

$sql = “select  *  from  administrators where  admin_user = ‘admin’#’  and  admin_pass = ‘111’  “;

此时,该语句,就可以轻松进入系统。

万能密码的使用:

再看我填写一个“万能密码”: ‘ or 1 or ‘

用户名随便(比如aaa)。则该sql语句就变成类似这样:

$sql = “select * from  administrators where  admin_user = ‘aaa’  and  admin_pass = ‘’ or 1 or  ‘’  “;

此时,该语句,就可以找出所有数据——而当前有正好只有条语句。

解决办法:

基本上,罪魁祸首,都是单引号,因为单引号在sql语法中是一个“特殊字符”:用于字符串的形式符号。

sql语句中,也会有其他一些特殊字符,比如:”(双引号)#-- (两个中杠)

则,我们都需要对这些用于sql语句执行中的符号,进行“转义”。

基本上,就是这些漏洞的出现,都是在sql语句中,有用户的“输入信息”。

我们只要对“所有用户输入信息”,进行这些符号的转义,就可以避免。

做法:

$data1 = addslashes( $_POST[‘表单名1’]);

$data2 = addslashes( $_POST[‘表单名2’]);

..........

本文来源于:sql注入及其防范-变化吧
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
幸运草
学会与网络威胁共存 安全防范

学会与网络威胁共存

网络威胁就像感冒或者其他什么感染性病毒,谁也无法避免。但这是生活的一部分,它们就在那里,伺机给你来上一下,让你的生活变得有那么点点艰难。 同时,你又不能以牺牲业务发展的方式全情投入到防范潜在风险上。你...
2020年7种最大的网络安全威胁 安全防范

2020年7种最大的网络安全威胁

计算机盲打的技巧与方法【听看打练习】盲打不是几天就能练出来的。 首先你要把键盘上字母和数字的位置背下来。 再有严格遵照正规指法练习(就是哪个指头负责哪片键盘区)。 每个字都要按照上面的要求打出来,一个...
Web | 渗透神器nmap:端口扫描工具 漏洞扫描

Web | 渗透神器nmap:端口扫描工具

Watcher - 被动Web应用程序漏洞扫描程序Watcher是基于HTTP的Web应用程序的运行时被动分析工具。被动意味着它不会损害生产系统,在云计算,共享托管和专用托管环境中使用它是完全安全的。...