2010-09-15 63 views
1

我有一個網站使用PDO編寫的PHP。我現在用的是bindParam()函數來綁定到一個SQL INSERT查詢:PHP和PDO阻止Javascript注入

("insert into Table (id, date, data) VALUES (?, ?, ?)") 

,但我能夠插入包含

"<script>window.location="google.com"</script>" 

如何防止這樣的字符串?

謝謝!

回答

2

PDO是不會阻止你這樣做。您需要將自己繩子的護理:

  1. 如果你不希望在所有<script>標籤,使用strip_tags
  2. 如果你希望這些標籤,但不想讓他們去執行,然後使用htmlentities
0

假設你的意思

<script>window.location="google.com"</script> 

你應該擔心顯示行上注入保護,如您不想與HTML實體來填充數據庫。

在顯示數據庫內容的頁面上使用htmlspecialchars() [1]。

[1] http://www.php.net/manual/en/function.htmlspecialchars.php

+0

你是什麼意思?我不應該阻止這些進入數據庫首先? – 2010-09-15 03:32:08

+0

你可以過濾輸入到數據庫或過濾輸出到瀏覽器,只要確保你不過濾兩次。目前我的首選是過濾輸出,以免數據庫散佈HTML實體。 – Andrew67 2010-09-15 18:05:54