我看到使用XSS乾淨的Kohana的舊版本 http://docs.kohanaphp.com/general/securityXSS在Kohana的潔淨3.1
但如何的文檔中的Kohana 3.1 使用htmlpurifier 和
$this->input->get('my_var','default_value', true);
我看到使用XSS乾淨的Kohana的舊版本 http://docs.kohanaphp.com/general/securityXSS在Kohana的潔淨3.1
但如何的文檔中的Kohana 3.1 使用htmlpurifier 和
$this->input->get('my_var','default_value', true);
拉斯穆斯的替代實現這一提議移除來自Kohana的XSS黑名單爲了逃避輸出htmlspecialchars() - HTML::chars()
或使用HTML Purifier,以防您真的需要讓一些HTML進入。
從3.1開始,缺省情況下,安全方法沒有xss_clean()
方法,您必須安裝shadowhand's HTMLpurifier模塊來保護輸入字符串(通過從github添加子模塊,將其放入模塊並在啓動時啓用它)。
模塊本身將覆蓋默認安全類,並添加使用HTMLpurifier進行轉義的xss_clean()
方法。還有一個模塊的配置文件,您可以在應用程序級別設置所有內容。沒有輸入轉義是由於許多原因「自動」完成的;開銷,一致性等
按要求是相當多在這個版本重寫相匹配的RFC 2616,並獲得更強大HMVC,你會訪問您的查詢字符串Request::query()
[$this->request->query()
你的控制器裏面]瓦爾,但仍然沒有逃脫的那一面完成(每個請求可以有它自己的頭,POST,GET等)
最簡單的方法可以讓你逃脫當前POST變量是做:
$safe = Arr::map('Security::xss_clean', $this->request->post());
PS 不要在這裏寫的關於$this->request->param()
的廢話過分注意,它只是用於訪問匹配的Route參數,而不是GET或POST變量。
+1非常好的答案 – alex 2011-04-16 08:05:30
爲Kohana的框架HTMLPurifier模塊:在引導和測試 https://github.com/shadowhand/purifier
負荷,模塊:
$my_test = '<a href="#" onclick="window.location.href = \'http://google.com\'"></a>';
echo Security::xss_clean($my_test);
你永遠需要從中獲取修改數據。您需要在使用HTML :: chars()輸出期間清理數據。並直接使用'$ _GET'訪問get變量。 – zerkms 2011-04-14 12:21:48
'$ this-> request-> query()'更好;) – biakaveron 2011-04-14 12:42:12
@biakaveron:或'$ this-> request-> param()'。由於某種原因,從未使用過它。我的錯。 – zerkms 2011-04-14 13:09:36