仿sql注入
#SEO:
##SEO:
1,如果優化的話 title
部分是非常重要的,用來優化我們網站的關鍵字的搜尋引擎會根據關鍵字對你的網站歸類,如果網站權重高的話,當使用者搜尋關鍵字的時候,會先看到你的網站
#2,日與網站---指向英文的網站,說明日文的網站給英文的投了一票,如果給英文的網站投的票越多,說明英文的網站越好
防止SQL
注入:
1
,建立一個使用者登入的表單
#select()會查詢出所有的記錄find() 只會查詢一筆記錄寫一個簡單的使用者名稱驗證,在使用者名稱表單中寫上'or 1 or'
也會提示使用者名稱正確,思考題:為什麼不驗證就成功了?
echo $model->getLastsql();//印出sql語句
#經過查詢執行的sql語句,我們發現,導致sql注入的原因是單引號
因為:
#1
#php##的魔術引號,來將使用者輸入的資料進行轉義
php
的低版本,預設是開啟的,這樣會自動的將使用者輸入的資料進行轉義
php.ini就可以防止驗證正確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注入攻擊了,方法不只一種,大家可以嘗試的去寫一下,練練手。
相關推薦:
以上是使用TP框架仿sql攻擊注入的詳細內容。更多資訊請關注PHP中文網其他相關文章!