.NET Response.Write大型HTML字符串,剥离/中断SCRIPT标记的内容

时间:2017-02-01 14:52:50

标签: javascript .net

我的情况是,包含javascript的HTML内容通过编码的查询字符串发送到我的脚本。在接收.NET页面上,我需要response.clear并将查询字符串写入浏览器。

除了Chrome Inspector上的脚本标记内容似乎为空外,所有内容都可以正常写入。

enter image description here

当我检查页面来源时,它们在那里,但以红色突出显示enter image description here

有人知道这是什么样的巫术吗?

我试过了

response.write(html)

以及

Dim html As String = Request.QueryString("html")
Dim bytes As Byte() = Encoding.UTF8.GetBytes(html)

Response.ClearHeaders()
Response.Clear()
Response.Charset = "UTF-8"
Response.ContentType = "text/html"
Response.AddHeader("Content-Length", bytes.Length)
Response.OutputStream.Write(bytes, 0, bytes.Length)

但我的结果相同。这是某种安全实施吗?

1 个答案:

答案 0 :(得分:0)

检查输入字符串中是否有非空格的不可打印字符。您可能无法在输出中看到这些,但浏览器中的解析器可能会生成语法错误,因为它们不是有效的空白字符。您必须检查原始字节(在您看到错误的代码周围)。

此外,您可能正在达到查询字符串的最大长度。它因浏览器而异。

Internet Explorer

  

RFC 3986也声明没有限制,但表示主机名是   由于DNS限制,限制为255个字符(第2.3.3节)。   Microsoft声明Internet Explorer中URL的最大长度   是2,083个字符,路径中不超过2,048个字符   网址的一部分。

Chrome和Firefox

没有官方文件,但测试结论是限制大约是64K

但是,我想说明你所做的是一个巨大的安全风险。你永远不应该只是毫不犹豫地渲染出整个查询字符串。