六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

如何保護Web 網站免受 SQL注入攻擊?

[摘要]如何保護Web 站點免受 SQL注入攻擊?SQL注入攻擊是指攻擊者利用站點中合法用戶的輸入機制發送 SQL 代碼到數據庫執行,避免SQL 注入攻擊的黃金法則是:再來自外部源的所有數據到達數據庫之前將其轉義。該法則不僅適用于 INSERT 和 UPDATE 語句,也適用于SELECT查詢~在腳本的查...
如何保護Web 站點免受 SQL注入攻擊?

SQL注入攻擊是指攻擊者利用站點中合法用戶的輸入機制發送 SQL 代碼到數據庫執行,避免SQL 注入攻擊的黃金法則是:再來自外部源的所有數據到達數據庫之前將其轉義。該法則不僅適用于 INSERT 和 UPDATE 語句,也適用于SELECT查詢~

在腳本的查詢中使用預編譯語句幾乎可以消除所有的SQL注入攻擊問題,但是如果選擇使用 query()方法,將不具備這種保護一一必須對添加到查詢中的用戶輸入手工轉義。其代碼如下:

<?php
    $dbms = "mysql";                                  // 數據庫的類型
    $dbName ="php_cn";                                //使用的數據庫名稱
    $user = "root";                                   //使用的數據庫用戶名
    $pwd = "root";                                    //使用的數據庫密碼
    $host = "localhost";                              //使用的主機名稱
    $dsn  = "$dbms:host=$host;dbname=$dbName";
    $name ='mr';
    $name ="'or Name LIKE'%";
    $query="select * from user where username = '".$name."'";//sql語句
try {
    $pdo = new PDO($dsn, $user, $pwd);//初始化一個PDO對象,就是創建了數據庫連接對象$pdo
    $result = $pdo->query($query);    //輸出結果集中的數據
    foreach ($result as $row){        //輸出結果集中的數據
        ?>
<tr>
    <td bgcolor="#FFFFFF"><div align="center"><?php echo $row['username'];?></div></td>
</tr>
<?php
    }
}catch (Exception $e){
    echo "ERROR!!".$e->getMessage()."<br>";
}
?>

在這個實例中,假定SQL語句中的 $name 變量來自于用戶提交的表單。通常用戶會提交像“mr”這種內容,這就將會生成下面的SQL語句:

select * from user where username = 'mr'

這在腳本中不會造成任何問題,然而,一個“聰明”的攻擊者可能會輸入 “‘OR Name LIKE’%”,從而得到下面的SQL 語句:

select * from user where username = 'mr'

這在腳本中不會造成任何問題,然而,一個“聰明”的攻擊者可能會輸入 “‘OR Name LIKE’%”,從而得到下面的SQL 語句:

select * from user where username ="OR Name LIKE'%'

這種輸入會為攻擊者打開整個表,如果是非常敏感的數據,將被完全暴露在外。那么采用什么方法才能解決這個問題呢?

解決辦法

要想解決這個問題,可以使用PDO中的quote 方法轉義傳遞給SQL 字符串的數據,只需要將SQL代碼修改成:

$sql="select * from user where username = '".$pdo->quote($name)."'";

記住需要引用SQL 查詢中使用的每塊數據,這個沒有快捷途徑,除非考慮使用prepare()和 execute()方法。

說明:

如果正在使用PDO->query()方法,那么總需要使用quote()方法引用用戶的輸入,記住是“總需要”。

如果選擇使用prepare()和 execute()方法,那么不必引用那些需要綁定到預編譯SQL 的值(比如:將被插入導數據庫的值),驅動會為用戶做所有的事,然而,有時可能無法將一個變量綁定到預編譯 SQL 語句,在這種情況下,如果正在創建一個動態SQL語句,那么需要引用所有用到的無法被綁定的值(如:GROUP BY 子句或ORDER BY或表名稱)。

那么關于如何保護Web 站點免受 SQL注入攻擊的解決辦法到這里就介紹完了,相信小伙伴們都可以輕松的掌握這節的知識點~

以上就是如何保護Web 站點免受 SQL注入攻擊?的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 日本三级2020| 日韩精品亚洲精品485页 | 日本一区二区三区在线 视频观看免费 | 亚洲精品午夜久久aaa级久久久 | 淫片网站| 午夜激情视频在线观看 | 啪啪.com | 热热色国产 | 深夜影院深a久久 | 五月婷激情 | 亚洲一区有码 | 日本五级床片在线观看 | 欧洲精品一区二区 | 中文线码中文高清播放中 | 午夜性视频 | 午夜网站在线观看 | 一级毛片网 | 亚洲成人7777 | 青青青免费在线视频 | 欧美一级淫片免费播放口 | 色噜噜网站| 青青在线视频免费观看 | 青草娱乐极品免费视频 | 日韩性视频 | 午夜影视网 | 亚洲欧洲日本在线 | 日韩成人免费观看 | 日本中文字幕第一页 | 做受又硬又粗又免费视频 | 伊人一本之道 | 羞羞一区二区三区四区片 | 亚洲国产成人久久综合野外 | 天天操天天摸天天曰天天干天天弄天天干 | 色婷婷中文网 | 中文亚洲 | 最近韩国中文字幕更新 | 日本www视频在线观看 | 亚洲天堂在线视频观看 | 一二三四社区在线高清3 | 天天看片中文字幕 | 青娱乐国产精品视频 |