Asp classic 通过URL编写跨站点脚本

Asp classic 通过URL编写跨站点脚本,asp-classic,xss,javascript-injection,Asp Classic,Xss,Javascript Injection,我被告知要在我的一些旧的.asp页面中找到一个跨站点脚本(XSS)修复程序 我对这个问题做了一些研究,但没有找到问题的答案。这是我第一次听说XSS,第一次看ASP(虽然页面上只有HTML),而且我已经有2年没有从事网页设计了,所以我非常生疏 例如,我有这个表格 <form method="POST" id="CH" name="CH" action="http://some_url/some.asp"> <input type="hidden" name="srv" value

我被告知要在我的一些旧的.asp页面中找到一个跨站点脚本(XSS)修复程序

我对这个问题做了一些研究,但没有找到问题的答案。这是我第一次听说XSS,第一次看ASP(虽然页面上只有HTML),而且我已经有2年没有从事网页设计了,所以我非常生疏

例如,我有这个表格

<form method="POST" id="CH" name="CH" action="http://some_url/some.asp">
<input type="hidden" name="srv" value="1" ID="srv"/>
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%" align="center">
    <TR valign="top">
            <TR>
                <TD align="center">Input something here
                <input name="input_something" type="text" class="field-no-fit" maxlength="12" value="">
                </TD>
            </TR>
    </TR>
</TABLE>
</form>
页面将加载,然后抛出javascript警报并显示错误图像

我的目标是在打开页面时停止脚本运行。 我读过关于Server.HTMLEncode的文章,但找不到一种方法来阻止脚本在页面加载时运行

提前谢谢

编辑:如果我将输入值替换为以下值,我是否能够至少部分解决此问题: “”

我无法测试它,因为目前我没有访问IE6的权限,而所有其他浏览器(包括IE>6版本)都避免了该错误(已在“安全”选项卡中禁用XSS筛选器,但它不起作用)

(我对ASP知之甚少)启用ASP请求验证,您可能可以轻松修复该错误。与任何行为更改一样,许多事情可能会在其他页面上中断(尽管这会令人惊讶),因此请首先测试更改。请参阅中的步骤1

您的服务器正在从URL参数填充页面上的所有标记,包括隐藏的“srv”输入,而不过滤HTML标记,然后将其粘贴到页面中。您可以将此表单限制为仅响应POST,而不响应GET方法,那么您的示例攻击将不起作用。这可能是最简单、最无害的修复方法

最后,看看是否可以为用于跟踪HTTPOnly会话的任何cookie设置cookie属性


你可以在

上详细阅读所有可能的衡量标准,我认为这与浏览器无关

显然,您可以直接在页面上编写querystring参数的内容,如下所示:

<%=Request.QueryString("1")%>
您可以在页面上的任何位置直接在页面上写入用户输入

这应该能奏效


您是否试图阻止XSS攻击?或者您只是想阻止页面上加载所有javascript?我正在尝试阻止XSS攻击(是;)您的anwser适用于asp.net。问题是关于经典asp
<%=Request.QueryString("1")%>
server.htmlencode( Request.QueryString("1") )