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

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

如何保護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知識。




主站蜘蛛池模板: 欧美夜夜骑| 一二三四免费观看高清观看在线 | 四虎在线播放免费永久视频 | 日本道精品一区二区三区 | 天天干天天添 | 天天色爱 | 香蕉视频色 | 欧美中文字幕在线 | 日韩在线手机看片免费看 | 亚洲网站在线免费观看 | 亚洲成在人天堂在线 | 星辰影院在线 | 天天躁日日躁狠狠躁黑人躁 | 日韩无砖专区 | 最新亚洲情黄在线网站无广告 | 一级毛片免费毛片一级毛片免费 | 最近新的免费韩国视频 | 欧美性大战久久久久久 | 午夜免费观看 | 日韩精品一区二区三区大桥未久 | 日本www色视频成人免费免费 | 日韩经典视频 | 欧美中文日韩 | 污视频在线 | 色综合天天干 | 新激情五月 | 午夜视 | 一级毛片免费的 | 伊人网视频在线 | 中文精品久久久久国产网站 | 丝袜捆绑调教视频免费区 | 日韩高清一级毛片 | 色老头网站久久网 | 一道本久久 | 天天插天天透天天狠 | 天堂中文在线观看 | 日韩成人免费视频 | 日本香蕉一区二区三区 | 亚洲无限乱码一二三四区 | 亚洲人视频在线 | 伊人久久婷婷 |