【问题标题】:Javascript functions not working in Chrome browser after PostBackPostBack 后 Javascript 函数在 Chrome 浏览器中不起作用
【发布时间】:2014-12-12 06:41:10
【问题描述】:

我在使用 Chrome 浏览器时遇到了一个奇怪的问题。 它是一个在线捐赠表格。 用户可以选择贡献不同的金额。 此表格包含几个单选按钮以及提供其他捐赠金额的选项。 这种形式在 IE 和 Firefox 中运行良好, 但在 Chrome 上无法正常工作。 该问题似乎仅在回发时发生。 在回发 javascript 函数中,“selectAmount”和“selectOtherAmount”函数不起作用。 基本上在单选按钮的单击事件上,我调用了上述简单的 js 函数。 看起来 Chrome 将其视为跨站点脚本和阻止。

在 chrome 调试器中,在 Postback 上显示以下错误。

"XSS Auditor 拒绝执行 'myform.aspx?id=12345' 中的脚本 因为在请求中找到了它的源代码。 审核员已启用,因为服务器既未发送“X-XSS-Protection”也未发送“Content-Security-Policy”标头。”

这是我的代码

if (item[0] == "__OTHER__")  
{
    if (selectedValue == "__OTHER__")
    {
        amountLevels.Append("<tr><td><input type=\"radio\" name=\"levelamount-" + donationOption + "\" id=\"rbAmountOther-" + donationOption + "\" value=\"" + defaultOtherAmount.ToString("0.00") + "\" onclick=\"selectOtherAmount(this.value,'" + donationOption + "');\" checked=\"checked\"  /></td>");
    }
    else
    {
        amountLevels.Append("<tr><td><input type=\"radio\" name=\"levelamount-" + donationOption + "\" id=\"rbAmountOther-" + donationOption + "\" value=\"" + defaultOtherAmount.ToString("0.00") + "\" onclick=\"selectOtherAmount(this.value,'" + donationOption + "'); \"  /></td>");
    }
    amountLevels.Append("<td><input type=\"text\" id=\"txtAmountOther\" value=\"" + defaultOtherAmount.ToString("0.00") + "\" " + disabled + " onchange=\"selectOtherAmount(this.value,'" + donationOption + "');\" onkeypress=\"return isValidAmount(event);\" style=\"width:70px;\" />" + item[1] + "</td></tr>");
}
else if (string.Compare(selectedValue, item[0], true) == 0)
{
    amountLevels.Append("<tr><td><input type=\"radio\" id=\"rdbAmount-" + donationOption + index + "\" name=\"levelamount-" + donationOption + "\" value=\"" + amount.ToString("0.00") + "\" checked=\"checked\" onclick=\"selectAmount(this.value,'" + donationOption + "');\"></td><td>&nbsp;&nbsp;" + amountLabel + "</td></tr>");
    selectedAmount = amount.ToString("0.00");
}
else
{
    amountLevels.Append("<tr><td><input type=\"radio\" id=\"rdbAmount-" + donationOption + index + "\" name=\"levelamount-" + donationOption + "\" value=\"" + amount.ToString("0.00") + "\" onclick=\"selectAmount(this.value,'" + donationOption + "');\"></td><td>&nbsp;&nbsp;" + amountLabel + "</td></tr>");
}

【问题讨论】:

    标签: javascript jquery html asp.net google-chrome


    【解决方案1】:

    可以通过在受影响的页面上发送非标准 HTTP 标头 X-XSS-Protection 来禁用此“功能”。

    X-XSS-Protection: 0
    

    看到这个帖子:Refused to execute a JavaScript script. Source code of script found within request

    【讨论】:

    • 这在 IE 和 FF 中运行良好,仅在 Chrome 上发生,您认为禁用此保护是否是个好主意。因为这是一个 Https 站点?如果可以,您能否提供一些示例如何禁用它
    • 我能够设置 X-XSS-Protection: 0 ,我的页面正在运行,它解决了我的问题。但是是否建议阻止保护。我唯一担心的是,它是否为跨站点脚本铺平了
    • X-XSS-Protection 是 Internet Explorer 8(和更新版本)理解的 HTTP 标头。此标头允许域打开和关闭 IE8 的“XSS 过滤器”,这可以防止某些类别的 XSS 攻击。 IE8默认开启过滤器,但服务器可以通过设置关闭过滤器。当然,如果你想防止网站受到 XSS 攻击,请启用它,我相信它是你的 CSP,不会让你这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2014-04-29
    • 2016-11-30
    • 2017-11-11
    相关资源
    最近更新 更多