3
保護在我的工作的應用中,一個客戶端視圖來生成基於數據庫中的一些記錄。我首先生成JSON的記錄,將其保存在一個變量在我的網頁,然後用JS來構建界面。從XSS在escape_javascript()輸出中的Rails
問題是記錄包含用戶生成的字段,因此應用程序易受XSS影響。如果讓JSON通過escape_html
(由不調用它html_safe
),它會搞砸了引號。
要得到的代碼。在我的模型:
Class Foo
# ...
def describe_for_view
[{:title => "hello", :content => "<script>I.Am.Evil()</script>"}]
end
end
在我看來
某處:
<script>
var describedForView = $.parseJSON("<%= escape_javascript(@foo.describe_for_view.to_json).html_safe %>");
</script>
然後在我的javascript:
$("body").append("title: " + describedForView[0].title + ", content: " + describedForView[0].content);
什麼我目前做的是,我包裹訪問用戶 - 按照以下定義的呼叫$.sanitize
生成的字段:
$.sanitize = function(str) {
return $("<div/>").text(str).html();
};
事情以這種方式工作,但我不認爲它是乾淨的。
有什麼建議嗎?