php安全-防止sql注入攻擊簡單方法_PHP教程

來源:互聯網
上載者:User
本文章簡單的利用一個執行個體來介紹了關於php防止sql注入的簡單辦法,有需要學習的朋友可以參考一下本文章哦。


方法一:密碼比對

思路:首先通過使用者輸入的使用者名稱去查詢資料庫,得到該使用者名稱在資料庫中對應的密碼,再將從資料庫中查詢到的密碼和使用者提交過來的密碼進行比對。

代碼:

代碼如下 複製代碼

$sql="select password from users where username='$name'";

$res=mysql_query($sql,$conn);

if ($arr=mysql_fetch_assoc($res)){//如果使用者名稱存在

if ($arr['password']==$pwd) {//密碼比對

echo "登入成功";

}else{

echo "密碼輸入有誤";

}

}else {

echo "該使用者名稱不存在";

}

分析:該情況下,代碼健壯了不少,即使在magic_quote_gpc=Off的情況下,也能防止SQL注入攻擊。因為攻擊者想成功登入的話,得繞過兩道坎,第一是輸入的使用者名稱要存在,這一步可以構造一個SQL語句(‘ or 1=1%23)直接繞過,但是這樣子無法通過第二道坎。因為需要使用者輸入一個正確的密碼才能通過,顯然,這已經拒絕了SQL注入攻擊。


方法二:使用PDO的PDO::prepare()預先處理操作來防止SQL注入攻擊

思路:建立一個pdo對象,利用pdo的預先處理操作可以防止SQL注入攻擊

代碼:

代碼如下 複製代碼

$name=$_GET['username'];

$pwd=$_GET['password'];

$sql="select * from users where username=? and password=?";

//1.建立一個pdo對象

$pdo=new PDO("mysql:host=localhost;port=3306;dbname=injection","root","");

//2.設定編碼

$pdo->exec("set names 'utf8'");

//3.預先處理$sql語句

$pdoStatement=$pdo->prepare($sql);

//4.把接收到的使用者名稱和密碼填入

$pdoStatement->execute(array($name,$pwd));

//5.取出結果

$res=$pdoStatement->fetch();

if(empty($res)){

echo "使用者名稱或密碼輸入有誤";

}else{

echo "登入成功";

}

http://www.bkjia.com/PHPjc/629678.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629678.htmlTechArticle本文章簡單的利用一個執行個體來介紹了關於php防止sql注入的簡單辦法,有需要學習的朋友可以參考一下本文章哦。 方法一:密碼比對 思路:首...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.