如何预防&转换为&什么时候使用JavaScript? (浏览器特定)

时间:2013-08-20 13:47:59

标签: javascript asp-classic html-escape

使用Javascript和ASP时,HTML页面上的字符串输出有问题。页面生成的逻辑如下:

  1. 我们使用asp页面使用Response.Write()生成HTML代码。如果字符串包含数字字符引用(例如С),它将在用户一侧显示为字符。

  2. 之后我们添加OnLoad事件,该事件需要Javascript函数。所有这些都发生在<body><\body>标记内。在<script></script>标记内添加的JavaScript源代码。该函数仅添加document.href,其中包含对同一asp页面的引用。

  3. asp逻辑再次加载并使用Response.BinaryWrite()向页面添加一些文本(Response.Write可以全部使用)所有字符引用都显示为代码:&#1057;。显然所有'&amp;'符号变为&amp;(asp自动转换),浏览器将其解码为&amp;我们只能看到代码&#1057;而不是符号'С'。

  4. 据我所知,这种行为可能是由<script>标签引起的,作为针对xss攻击的预防措施。最后我想停止编码'&amp;'为&amp;

    然而,这是最重要的部分:

    如果我添加带有“Content-Type”“text \ html”的标题,IE(任何版本)都会以正确的方式开始编码NCR符号。但Firefox,Chrome和Safari不会改变行为并保持编码和为&amp;。我可以看到Stack Overflow上的几个问题看起来像我的,但情况并不完全相同(我的字符串不是由JavaScript直接插入的,所以我无法操纵输出字符串并将&amp;更改为&amp ;,也是我的字符串首先有正确的符号,它们可以通过asp或浏览器进行更改。是否有任何优雅的方式迫使Firefox或Chrome将页面解码为IE?也许HTML标签中有一些设置或属性?这个问题看起来像是依赖于我的浏览器,我是对的吗?

0 个答案:

没有答案