2012-12-16 61 views

回答

3

有些情況下xss_clean不會保護你。 Issue 470包括這個例子:

public function index() 
{ 

    $name = $this->security->xss_clean('hover me" onmouseover=alert("XSS2") "'); 
    echo '</div>Name:<input value="'.$name.'">'; 
    echo '</body></html>'; 
} 

從開發商的答覆是,這是由設計,並表明$name應該使用form_prep()已經越獄。

如果您使用set_value('field-name', 'default')爲了在表單驗證失敗時保留用戶輸入),那將...嘗試爲您調用form_prep()。需要注意的是,如果您沒有加載表單驗證庫,它將不會轉義「默認」參數。 (Issue 1781,固定在3.0-dev中)。

如果你的運行當前的3.0-dev,那麼form_prep()是更具體的關於它逃逸哪些字符。它應該避免使用XSS;在某些情況下它只是意想不到的結果。例如。如果您嘗試在3.0-dev中輸入文字「&amp;」,然後表單驗證失敗,則字段值將更改爲&,而不會發出警告。這種改變是爲了解決雙轉義問題(issue 1953)。