簡體   English   中英

JavaScript JSON逸出安全性

[英]JavaScript JSON escape security

有人可以向我解釋為什么JSON中的字符串會執行嗎? (第二個<script>標記及更高版本。)

http://codepen.io/anon/pen/PZLyve

<script>
    var data = {
      "UserId": "576757ef-1234-4aac-aad8-98f9088138f4",
      "Firstname": "Firstname<script>alert(\"User firstname security!\");</script>",
      "Lastname": "Lastname<script>alert(\"User lastname security!\");</script>",
      "Email": "<script>alert(\"User email security!\");</script>",
      "Username": "Username<script>alert(\"User username security!\");</script>"
    };
</script>

該代碼是從MVC將數據轉換為JSON的結果:

var data = @Html.Raw(JsonConvert.SerializeObject(Model.User));

因為瀏覽器的HTML解析器不了解Javascript。 它所看到的是:

<script>
    blah blah blah </script>
    blah blah <script>blah blah</script>
    ...

它將每個<script>標記的內容分別傳遞給Javascript解釋器。

如果要在HTML中嵌入Javascript,則必須HTML對其進行轉義,或者需要破壞<script>標簽:

'</sc' + 'ript>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM