您好,欢迎访问一九零五行业门户网

使用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,对用户提交的数据进行转义
调用php的addslashes()函数
$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:
<form action="url/verify" method="post"> 用户名:<input type="text" name="username"> 密码:<input type="text" name="password"> <input type="submit" value="提交"> </form>
以上讲述的就是thinkphp防止sql注入攻击了,方法不止一种,大家可以尝试的去写一下,练练手。
相关推荐:
php实现防止sql注入的方法实例
以上就是使用tp框架仿sql攻击注入的详细内容。
其它类似信息

推荐信息