2014-01-12 48 views
3

我想確保我的消毒沒有任何泄漏。 <p><?php echo htmlspecialchars($user_data); ?></p>這個消毒是否有任何XSS泄漏

因此,這是爲了保護我不受XSS-注入一個安全的方式: 並且還,我只是硬編碼p標籤和H1標籤

如內輸出用戶數據。

首先,使用此功能sanetize數據時我虎視眈眈,從我使用這個數據庫中的數據就被插入到我的數據庫之前,雖然在我的DB IM使用bind_param

function sanitize($str) { 
    return strtolower(strip_tags(trim(($str)))); 
} 

sanitize($user_data); - > then gets inserted into db 

然後是IM展示它。

<p> <?php echo htmlspecialchars($user_data); ?> </p> 

那麼,這是一種安全的方法來阻止任何XSS?

謝謝!

+0

此外,當進出口使用此從一個textarea IM插入文本:$ TXT = nl2br(用htmlspecialchars($ _ POST [ 'FREETEXT']));然後簡單地通過

<?php echo $ txt; ?>

user2722667

+0

附註:如果您正在轉義由單引號分隔的HTML屬性,請務必設置「ENT_QUOTES」。 – luiscubal

+0

順便說一句:爲什麼你插入到數據庫之前剝離標籤? – luiscubal

回答

1

從安全角度來看,沒有必要,只要你逃跑用你的sanitize函數/正確處理您的數據爲中你輸出到:

  • 使用htmlspecialchars()是所有需要輸出到HTML;
  • 如果您需要輸出到javascript,請使用json_encode;
  • 爲數據庫使用帶有綁定變量的預準備語句;
+0

有點懷疑..他已經使用strip_tags那麼是否有必要使用htmlspecialchars?反之亦然,他是否需要使用strip_tags ? – user1844933

+2

@ user1844933坦率地說,我沒有看到使用strip_tags的意思,htmlspecialchars無論如何都會將'<'轉換爲'<',所以標籤無法做任何事 – luiscubal

+1

@ user1844933是的,可以有'<'等。在文本中籤名以及瀏覽器可以解釋爲標籤的開始。 – jeroen