2011-08-05 79 views
14

免責聲明filter_var VSヶ輛VS用htmlspecialchars

這不是我們是否應該逃逸數據庫的輸入問題。這嚴格看待標題中三個功能之間的技術差異。

this question討論htmlentities()htmlspecialchars()之間的差異。但是,它並沒有真正討論filter_var(),我在Google上發現的信息更符合「確保在用戶輸入echo'd之前避開用戶輸入!

我的問題是:

  • 爲什麼htmlspecialchars()htmlentities()常用在filter_var()
  • 使用filter_var()會有一些性能問題嗎?
  • 是否filter_var()沒有其他兩個選項那麼安全?
  • 是否有任何其他理由不使用下面是echod

filter_var($var, FILTER_SANITIZE_FULL_SPECIAL_CHARS);

+1

'htmlentities' /'htmlspecialchars'允許您通過將第四個參數設置爲'false'來防止雙重編碼實體。如果可以通過'filter_var'實現,我不會。 – ryanve

回答

7

我的猜測(約缺少應用的)之前編碼用戶輸入將是它的簡單,因爲過濾器擴展時,纔會啓用默認情況下,因爲v5.2,而HTML *方法已經更長。

+0

我覺得這將是這樣的缺乏收養。但是,爲什麼PHP內部團隊爲了在'html *'方法沒有問題的情況下需要創建'filter_var'? – cspray

+0

因爲filter_var做的不僅僅是HTML轉義。 – Stephen

+0

好的,那麼爲什麼需要添加這個特定的功能'filter_var()'? – cspray