【问题标题】:cross site scripting issue with javascript functionjavascript函数的跨站点脚本问题
【发布时间】:2015-10-22 08:44:28
【问题描述】:

我们已扫描我们的网站是否存在漏洞。我们收到了一条关于此代码 StaticPostBackScrollVerticalPosition 的警告消息,可能是跨站点脚本。

我该如何解决这个问题?请告诉我。

private const string VerticalPosition = "StaticPostBackScrollVerticalPosition";
private const string ScriptHidden = "document.forms[0].{0}.value";
    private const string SaveScriptName = "StaticPostBackScrollPositionSave";
    private const string LoadScriptName = "StaticPostBackScrollPositionLoad";

private const string ScriptGetPosition = ScriptHidden + " = (navigator.appName == 'Netscape') ? window.page{1}Offset : document.documentElement.scroll{2};";

private string GetPositionScript() 
{
    StringBuilder sb = new StringBuilder();

    sb.Append("<script language=\"JavaScript\"> \n");
    sb.Append("function SaveScrollPosition() { \n");
    sb.AppendFormat(ScriptGetPosition , VerticalPosition, "Y", "Top");
    sb.Append("setTimeout('SaveScrollPosition()', 100);");
    sb.Append("} \n");
    sb.Append("SaveScrollPosition(); \n");
    sb.Append("</script> \n");
    return sb.ToString();
}

private void ScrollPosition()
{
    if (!this.ClientScript.IsStartupScriptRegistered(SaveScriptName)) 
    {
        this.ClientScript.RegisterClientScriptBlock(GetType(), SaveScriptName, GetPositionScript());
        this.ClientScript.RegisterHiddenField(VerticalPosition , "0");
    }
}

【问题讨论】:

    标签: c# asp.net security xss


    【解决方案1】:

    这看起来像是误报,因为 VerticalPosition 设置为 StaticPostBackScrollVerticalPosition 的值,用于客户端代码(生成的 JavaScript)。

    但是,由于VerticalPosition 是一个const 设置服务器端,这不能被外部数据或用户输入操纵,所以我相信在这种情况下你可以免受 XSS 的影响。

    【讨论】: