tp5防止sql注入mysql_使用TP框架仿sql攻击注入

仿sql注入

SEO:

1,如果优化的话title部分是非常重要的,用来优化我们网站的关键字的

搜索引擎会根据关键字对你的网站归类,如果网站权重高的话,当用户搜索关键字的时候,会先看到你的网站

2,日与网站---指向英文的网站,说明日语的网站给英文的投了一票,如果给英语的网站投的票越多,说明英文的网站越好

防止SQL注入:

1,建一个用户登录的表单

select()会查询出所有的记录

find()只会查询一条记录

写一个简单的用户名验证,在用户名表单中写上’or 1 or’也会提示用户名正确,

思考题:为什么会不验证就成功了?

echo $model->getLastsql();//打印出sql语句

经过查询执行的sql语句,我们发现,导致sql注入的原因是单引号

因为:

1,通过php的魔术引号,来将用户输入的数据进行转义

php的低版本,默认是开启的,这样会自动的将用户输入的数据进行转义

php.ini中的

是开启的改为

Magic_quotes_gpc=On

就可以防止验证正确

2,对用户提交的数据进行转义

$username=addslashes($_POST['username']);用addslashes函数处理一下

3,利用thinkphp的系统变量获得外部数据$this->_server

thinkphp系统常量(4个)

$this->_post('username','addslashes');

4,使用数组作为tp框架中where条件

5、直接把查询语句写成

$list=$model->where('user_name="'.$username.'" and dept_id="'.$password.'"')->select();就不会登陆成功了

例://仿sql注入

public function login(){

$this->display();

}

public function verify(){

//用户名'or 1 or'登录会提示登录成功,是不正确的

//方法1修改ini.php

$username=$_POST['username'];

$password=$_POST['password'];

//方法2

/*$username=addslashes($_POST['username']);

$password=$_POST['password'];

//方法3

$this->_post('username','addslashes');

$password=$_POST['password'];

//方法4数组

$cond['user_name']=$username;

$cond['dept_id']=$password;

$list=$model->where($cond)->find();*/

$model=M('User');

//方法5

// $list=$model->where('user_name="'.$username.'" and dept_id="'.$password.'"')->select();

$list=$model->where("user_name='$username' and dept_id='$password'")->select();

echo $model->getLastsql();//打印出sql语句

if($list){

echo '登录成功';

}else{

echo '登录失败';

}

}

tpl:

用户名:

密码:

以上讲述的就是thinkphp防止sql注入攻击了,方法不止一种,大家可以尝试的去写一下,练练手。

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值