我正在使用Newtonsoft JSON解串器。如何爲XSS(跨站點腳本)清理JSON?在反序列化之前清潔JSON字符串或者寫一些自定義轉換器/消毒劑?如果是這樣 - 我不能100%確定解決這個問題的最佳方法。在反序列化之前清理JSON for XSS
下面是一個JSON的例子,它注入了一個危險的腳本並需要「清理」。我想要在我對它進行反序列化之前進行管理。但是我們需要假設各種XSS場景,包括BASE64編碼腳本等,所以問題更復雜,只需要一個簡單的REGEX字符串替換即可。
{ "MyVar" : "hello<script>bad script code</script>world" }
這裏是我的解串器的快照(JSON - >對象):
public T Deserialize<T>(string json)
{
T obj;
var JSON = cleanJSON(json); //OPTION 1 sanitize here
var customConverter = new JSONSanitizer();// OPTION 2 create a custom converter
obj = JsonConvert.DeserializeObject<T>(json, customConverter);
return obj;
}
JSON是從第三方UI界面發佈,所以它的相當暴露,因此服務器端驗證。從那裏開始,它會被序列化到各種對象中,並且通常存儲在數據庫中,以後可以在基於HTML的UI中直接檢索和輸出,因此腳本注入必須得到緩解。
我已經更新我的問題來解決我的意思是「清理」。 – MarzSocks
這取決於上下文。你能提供一些數據如何顯示的細節嗎?它會包含URL數據嗎?它會直接放入HTML嗎?它只會從JavaScript訪問嗎?它是一個HTML屬性嗎? XSS預防實際上取決於上下文。 – Gray
JSON從第三方UI界面發佈,因此其相當公開且因此服務器端驗證。從那裏它被序列化爲各種對象,並且通常存儲在數據庫中,之後可以在基於HTML的UI中直接檢索和輸出,因此必須控制腳本標記。理想情況下,要在進入應用程序邏輯層之前清理它,並且序列化程序是統一它們的地方。 :-) – MarzSocks