编写javascript时使用经典ASP编写跨站点脚本

编写javascript时使用经典ASP编写跨站点脚本,javascript,asp-classic,xss,Javascript,Asp Classic,Xss,在服务器端经典ASP文件中,假设您收到一个包含恶意javascript的请求字符串,如“警报('HACKED');” 然后我们将javascript写入包含该值的屏幕 %> <script type="text/javascript"> // some code <%=foo %> // some more code </script> <% %> //一些代码 //还有代码吗 永远记住:“过滤你的输入,转义你的输出” 在数据库

在服务器端经典ASP文件中,假设您收到一个包含恶意javascript的请求字符串,如“
警报('HACKED');

然后我们将javascript写入包含该值的屏幕

%>
<script type="text/javascript">
   // some code
   <%=foo %>
   // some more code
</script>
<%
%>
//一些代码
//还有代码吗
永远记住:“过滤你的输入,转义你的输出”

在数据库中筛选数据以确保安全存储(以防止SQL注入),并在将数据呈现给用户之前转义数据(以防止XSS)

尝试ASP的方法。

请记住:“过滤输入,转义输出”

在数据库中筛选数据以确保安全存储(以防止SQL注入),并在将数据呈现给用户之前转义数据(以防止XSS)


尝试ASP的方法。

但是HTMLEncode()使字符串“alert('HACKED');”不受影响?用户将看到(作为页面上的文本)
alert(“HACKED”)但实际的HTML将呈现为
警报(;“黑客”和#41;。不会出现javascript
alert()
框。单引号不会由HTMLEncode()编码,括号或分号也不会。HTMLEncode()对HTML很有效,我到处都在使用它,但在本例中,我输出的是javascript而不是HTML。这是一个困难的问题。几乎不可能确定哪些特定代码构成“恶意”。我可以问一下,为什么用户首先要向您提供JavaScript?您是否正在这样做:但是HTMLEncode()使字符串“alert('HACKED');”不受影响?用户将看到(作为页面上的文本)
alert(“HACKED”)但实际的HTML将呈现为
警报(;“黑客”和#41;。不会出现javascript
alert()
框。单引号不会由HTMLEncode()编码,括号或分号也不会。HTMLEncode()对HTML很有效,我到处都在使用它,但在本例中,我输出的是javascript而不是HTML。这是一个困难的问题。几乎不可能确定哪些特定代码构成“恶意”。我可以问一下,为什么用户首先要向您提供JavaScript?你在做这样的事情吗:
%>
<script type="text/javascript">
   // some code
   <%=foo %>
   // some more code
</script>
<%