2010-11-01 77 views
1

我是PDO的新手,剛開始使用它。我已經使用它插入,更新和刪除數據,並且使用基礎知識非常簡單。如何使PDO選擇查詢HTML安全嗎?

在測試環境中,我將一些HTML代碼插入數據庫。像:

<a href="google.com">Google</a> 
<b>Bold text</b> 
<u>Underlined text</u> 

等等

我想這一點,因爲我用我的網站上爲用戶提供簡單的WYSIWYG編輯器,我想,以確保數據的安全性。

使用下列內容:

$stmt = $dbh->prepare("SELECT * FROM naruto WHERE id = :id AND name = :name"); 

/*** bind the paramaters ***/ 
$stmt->bindParam(':id', $id, PDO::PARAM_INT); 
$stmt->bindParam(':name', $name, PDO::PARAM_STR, 5); 


/*** execute the prepared statement ***/ 
$stmt->execute(); 

/*** fetch the results ***/ 
$result = $stmt->fetchAll(); 

/*** loop of the results ***/ 
foreach($result as $row) 
    { 
    echo $row['id'].'<br />'; 
    echo $row['name']; 
    echo $row['image']; 
    } 

name是不同的HTML代碼,只是執行的HTML。所以文本是粗體的,而不是格式文本</b>。

我想知道是否有PDO的功能來阻止這一點。或者我只需要使用htmlentities和strip_tags?

在此先感謝

回答

1

數據庫並不特別在意存儲在其中的數據是否是HTML標記與否,也不做數據庫抽象層,如PDO ......它只是一個字符串,只要它們是關心。這取決於你將數據作爲HTML或純文本處理。

+0

我不知道。非常感謝您的回覆。 – moonwalker 2010-11-01 15:42:23

2

使用參數化查詢將保護您的數據庫免受不良數據的侵害。它不會保護您的HTML,因爲它是一個完全不同的層。

如果你想允許一些的HTML,那麼你需要運行數據(就在你展示給用戶之前)通過將白名單列出你想要允許的HTML。

我相信HTML Purifier是PHP用戶想要這樣做的首選工具之一。

+0

太棒了。這就是我一直在尋找的!非常感謝你! – moonwalker 2010-11-01 16:07:22