当前位置:Gxlcms > 数据库问题 > (十)DVWA之SQL Injection--测试分析(Impossible)

(十)DVWA之SQL Injection--测试分析(Impossible)

时间:2021-07-01 10:21:17 帮助过:5人阅读

 技术图片

Submit提交数据时的请求的url:
http://localhost:8001/dvwa/vulnerabilities/sqli/index.php?id=1&Submit=Submit&user_token=7ac5265996b3b0abac7637f9d10883b5#

 技术图片

Impossible级别的SQL Injection:

  1. impossible.php代码采用了PDO技术,划清了代码与数据的界限,有效防御SQL注入
  2. 只有当返回的查询结果数量为一个记录时,才会成功输出,这样就有效预防了暴库
  3. 利用is_numeric($id)函数来判断输入的id是否是数字or数字字符串,满足条件才知晓query查询语句
  4. Anti-CSRF token机制的加入了进一步提高了安全性,session_token是随机生成的动态值,每次向服务器请求,客户端都会携带最新从服务端下发的session_token值向服务器请求作匹配验证,相互匹配才会验证通过

session_token生成于服务端的session文件中

技术图片

每次客户端发起新请求之后,服务端的session文件即会作更新,更新其中的session_token值为随机值,同时随响应数据下发到客户端,在浏览器客户端的响应源代码中的form表单之内可获取到该值

技术图片

备注:

PDO技术:PHP数据对象(PHP Data Object)。在生成网页时,许多PHP脚本通常都会执行除参数之外其他部分完全相同的查询语句,针对这种重复执行一个查询,每次迭代使用不同的参数情况,PDO提供了一种名为预处理语句(prepared statement)的机制。它可以将整个SQL命令向数据库服务器发送一次,以后只有参数发生变化,数据库服务器只需对命令的结构做一次分析就够了,即编译一次,可以多次执行。会在服务器上缓存查询的语句和执行过程,而只在服务器和客户端之间传输有变化的列值,以此来消除这些额外的开销。这不仅大大减少了需要传输的数据量,还提高了命令的处理效率。可以有效防止SQL注入,在执行单个查询时快于直接使用query()或exec()的方法,速度快且安全,推荐使用。

(十)DVWA之SQL Injection--测试分析(Impossible)

标签:变化   first   submit   http   源代码   feed   其他   contain   exec   

人气教程排行