PHP防止sql注入小技巧之sql預(yù)處理原理與實現(xiàn)方法分析
本文實例講述了PHP防止sql注入小技巧之sql預(yù)處理原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:
我們可以把sql預(yù)處理看作是想要運行的 SQL 的一種編譯過的模板,它可以使用變量參數(shù)進行定制。
我們來看下它有什么好處:
- 預(yù)處理語句大大減少了分析時間,只做了一次查詢(雖然語句多次執(zhí)行)。
 - 綁定參數(shù)減少了服務(wù)器帶寬,你只需要發(fā)送查詢的參數(shù),而不是整個語句。
 - 預(yù)處理語句針對SQL注入是非常有用的,因為參數(shù)值發(fā)送后使用不同的協(xié)議,保證了數(shù)據(jù)的合法性。
 
這種預(yù)處理呢,可以通過兩個方式,咱們這次要說的是mysqli。它任何時候都可以確保應(yīng)用程序可以用相同的數(shù)據(jù)訪問模式,比PDO要更加實用。
預(yù)處理呢,它有兩種語句,一種是dml語句,另一種是dql語句。咱們先來看第一種:
<?php
header('Content-type:text/html;charset=utf-8');
$mysqli = new mysqli("127.0.0.1","root","root","test");
$mysqli->query('set names utf8');
$insert = $mysqli->prepare("insert admins (title,cookies,sta,lid) values (?,?,?,?)");
$title = "cuijinpeng";
$cookies = "luyaran201314";
$sta = "1";
$lid = 1;
$insert->bind_param("sssi",$title,$cookies,$sta,$lid);
$res = $insert->execute();
if($res){
  echo 1;
}else{
  echo $insert->error;
  echo 0;
}
$insert->close();
$mysqli->close();
第二種呢,代碼如下:
<?php
header('Content-type:text/html;charset=utf-8');
$mysqli = new mysqli("127.0.0.1","root","root","test");
$mysqli->query('set names utf8');
$select = $mysqli->prepare("select id,title,cookies,sta,lid from admins where id > ?");
$id = "1";
$select->bind_param("i",$id);
$select->bind_result($id,$title,$cookies,$sta,$lid);
$select->execute();
while ($select->fetch()) {
  echo $id."---".$title."---".$cookies."---".$sta."---".$lid."<br>";
}
$select->close();
$mysqli->close();
接下來,咱們就該看下這兩種語句分別支持什么樣子的sql了。
第一種呢,它支持insert、update、delete這三種類型的sql,第二種嘞,就是查詢語句了。
完事那個bind_param里的那個i,就是咱們傳入?yún)?shù)的類型了,具體介紹如下:
- i - integer(整型)
 - d - double(雙精度浮點型)
 - s - string(字符串)
 - b - BLOB(binary large object:二進制大對象)
 
我們傳入的每個參數(shù)都需要指定類,這樣通過告訴數(shù)據(jù)庫參數(shù)的數(shù)據(jù)類型,可以降低 SQL 注入的風(fēng)險。
好啦,本次記錄就到這里了。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php程序設(shè)計安全教程》、《php安全過濾技巧總結(jié)》、《PHP運算與運算符用法總結(jié)》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
上一篇:PHP設(shè)計模式之適配器模式(Adapter)原理與用法詳解
欄 目:PHP編程
下一篇:PHP學(xué)習(xí)記錄之常用的魔術(shù)常量詳解
本文標題:PHP防止sql注入小技巧之sql預(yù)處理原理與實現(xiàn)方法分析
本文地址:http://www.jygsgssxh.com/a1/PHPbiancheng/11024.html
您可能感興趣的文章
- 04-02關(guān)于txt數(shù)據(jù)庫php的信息
 - 04-02php本站才可以請求數(shù)據(jù) php本地數(shù)據(jù)庫
 - 04-02網(wǎng)頁里php操作數(shù)據(jù)庫 php網(wǎng)頁例子
 - 04-02php打印請求數(shù)據(jù) php打印輸出結(jié)果
 - 04-02php數(shù)據(jù)庫地址 phpstudy 數(shù)據(jù)庫
 - 04-02php插入數(shù)據(jù)庫為亂碼 php連接數(shù)據(jù)庫亂碼
 - 04-02php數(shù)據(jù)庫數(shù)據(jù)相加 php數(shù)據(jù)庫添加數(shù)據(jù)語句
 - 04-02php數(shù)據(jù)庫輸入變量 php里輸出數(shù)據(jù)庫數(shù)據(jù)函數(shù)
 - 04-02數(shù)據(jù)權(quán)限架構(gòu)思路php 數(shù)據(jù)權(quán)限設(shè)計方案
 - 04-02php如何用導(dǎo)入數(shù)據(jù) php用來導(dǎo)入其他文件的語句
 


閱讀排行
本欄相關(guān)
- 04-02php本站才可以請求數(shù)據(jù) php本地數(shù)據(jù)庫
 - 04-02關(guān)于txt數(shù)據(jù)庫php的信息
 - 04-02php打印請求數(shù)據(jù) php打印輸出結(jié)果
 - 04-02網(wǎng)頁里php操作數(shù)據(jù)庫 php網(wǎng)頁例子
 - 04-02php插入數(shù)據(jù)庫為亂碼 php連接數(shù)據(jù)庫亂
 - 04-02php數(shù)據(jù)庫地址 phpstudy 數(shù)據(jù)庫
 - 04-02php數(shù)據(jù)庫數(shù)據(jù)相加 php數(shù)據(jù)庫添加數(shù)據(jù)
 - 04-02數(shù)據(jù)權(quán)限架構(gòu)思路php 數(shù)據(jù)權(quán)限設(shè)計方
 - 04-02php數(shù)據(jù)庫輸入變量 php里輸出數(shù)據(jù)庫數(shù)
 - 04-02php如何用導(dǎo)入數(shù)據(jù) php用來導(dǎo)入其他文
 
隨機閱讀
- 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 01-10delphi制作wav文件的方法
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 01-11ajax實現(xiàn)頁面的局部加載
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 01-10C#中split用法實例總結(jié)
 - 04-02jquery與jsp,用jquery
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 


