博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL注入攻击
阅读量:2384 次
发布时间:2019-05-10

本文共 930 字,大约阅读时间需要 3 分钟。

什么是SQL注入攻击?

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  1. SQL注入原理:

    094227_sGgQ_2557944.png

web架构通常为三层:

表示层、逻辑层、存储层

SQL注入过程:

095439_F1iS_2557944.png

  1. 转义字符处理不当

   // 构造动态SQL语句

  $sql = "select * from tbl where field = '$_GET['input']'";

  // 执行SQL语句

  $res = mysql_query($sql);

测试:

在下边的网址后边加一个单引号,就会报数据库错误

100627_glPd_2557944.png

2.类型处理不当

   // 构造动态SQL语句

  $sql = "select * from tbl where field = $_GET['user_id']";

  // 执行SQL语句

  $res = mysql_query($sql);

Mysql内置了一个命令,可以读取文件

* Union all select load_file('/etc/passwd')--

select * from tbl where userid = 1 union all select load_file('etc/passwd')--

该命令会获取数据库管理员的密码

3.查询语句组织不当

user.php?table=user&

4.错误处理不当

即将站点的错误信息暴漏给用户,这样非常危险。

// 构造动态查询语句

$getid = "select * from tbl where userid > 1";

// 执行SQL语句

$res = mysql_query($getid) or die('<pre>'.mysql_error().'</pre>');

5.多个提交处理不当

// 参数是否是一个字符串

if(is_string($_GET["param"])){}

问题:

1.如果web站点禁止输入单引号字符,是否可以避免SQL注入?

102643_UNMa_2557944.png

102818_8DDY_2557944.png

寻找SQL注入的方法:

  1. 通过get请求

  2. 通过post请求

  3. 其他http请求,如cookie

转载于:https://my.oschina.net/corwien/blog/651715

你可能感兴趣的文章
由“输出从1到1000的数”想到的
查看>>
键盘上各个按键的英文名
查看>>
Linux系统文本模式下的截屏技巧
查看>>
php中$_Get $_POST $_REQUEST区别
查看>>
PHP - 解决中文乱码问题
查看>>
PHP学习-面向对象
查看>>
js页面跳转整理
查看>>
在64位Win7操作系统中安装Microsoft Access Engine的解决方案
查看>>
30类CSS选择器
查看>>
微信支付的使用介绍
查看>>
PHP单例模式应用详解
查看>>
冒号课堂§5.2:数据类型
查看>>
博客搬家
查看>>
冒号课堂§6.2:平台语言
查看>>
《关于信息系统组织方式的一个提案》的评论与反评
查看>>
冒号和他的学生们(连载10)——超级范式
查看>>
冒号和他的学生们(连载9)——泛型范式
查看>>
冒号和他的学生们(连载13)——范式总结
查看>>
A Proposal on Organization of Information System
查看>>
冒号和他的学生们(连载2)——首轮提问
查看>>