您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
6-2 sql注入yii的防范(wireShark抓包mysql)
发布时间:2023-05-10 15:09:39编辑:雪饮阅读()
-
yii方面的防止mysql注入
在yii方面,除了之前的活动记录的方式进行查询构造,也支持使用查询构造器的方式来构造查询
<?php
namespace app\controllers;
use yii\web\Controller;
class HelloController extends Controller{
public function actionIndex(){
$user= (new \yii\db\Query())
->select('*')
->from('wp_users')
->where('user_nicename=:user_nicename',[':user_nicename'=>'themedemos'])
->one();
print_r($user);
}
}
那么sql注入在yii方面,这里使用了查询构造器其实我个人感觉还是不能防范sql注入。
D:\phpstudy_pro\WWW\www.xyyii.com\basic\config\db.php中配置
'emulatePrepare'=>false
据说是这里emulatePrepare配置为false时候,则预处理交给mysql那边处理了,相当于说是这里发送给mysql两个语句,一个是预处理sql,一个是占位符的值。(但我抓包的结果感觉好像不是这回事,可能我对抓包结果的分析还不是很专业吧)
大概意思就是说因为php层面处理即便转义,也会遇到β和“\”编码到一起的时候导致的通过转义防止注入的失败吧。
使用wireShark抓包mysql
我这里wireshark使用的是Wireshark-win64-4.0.5.exe这个版本。
然后第一步我们需要选择要进行抓包的接口,我这里mysql就在本地,就直接选择本地回环接口如:“Adapter for loopback traffic capture”
然后在选择了网卡接口后的新界面中过滤栏里面填写过滤规则如:
tcp.port==3306
按照刚才我们的sql构造我们可以抓取到这样一句预处理sql,一般的是在Info这列中值如“Request Prepare Statement”这行中时在当前界面左下侧“MySQL Protocol=>Request Command Prepare Statement=>Statement”中有显示的
假如说你按照这样操作后,并且查询了一个mysql,但是没有找到类似我这样的结果,那么你可以试试”编辑=》首选项=》Protocols=》MySql”里面的” Show SQL Query string in INFO column”勾选下
关键字词:sql,注入,yii,wireShark,mysql