为经典ASP会话Cookie设置HTTPONLY

为经典ASP会话Cookie设置HTTPONLY

问题描述:

有谁知道如何在经典ASP会话cookie上设置HTTPONLY?为经典ASP会话Cookie设置HTTPONLY

这是在漏洞扫描中被标记的最后一件事,需要尽快修复,所以任何帮助表示赞赏。

~~~多一点信息我的问题~~~

任何人都可以请帮我这个?

我需要知道如何在默认情况下从ASP & IIS创建的ASPSESSION cookie上设置HTTPONLY。

这是服务器为所有asp页面自动创建的cookie。

如果需要,我可以在整个网站的所有cookie上设置HTTPONLY。

任何有关如何做到这一点的帮助将大受赞赏。

感谢

感谢 埃利奥特

+2

这是一个很好的问题。你知道如何去做? – 2011-03-09 02:18:05

+0

你到目前为止得到的解决方案是什么? – Dhananjay 2013-06-06 21:08:42

Response.AddHeader "Set-Cookie", "CookieName=CookieValue; path=/; HttpOnly" 

来源:http://www.asp101.com/tips/index.asp?id=160

+4

由于此cookie由默认情况下由ASP和IIS创建,因此我们没有机会以编程方式添加此项。 我想知道如果是其他设置在别的地方? 我更新了IIS Metabase.xml中的KeepASPCookieSecure,我想知道这是否可能是一种类似的修复? – 2010-06-07 15:58:06

+0

请注意,使用“addheader”添加cookie不会将cookie添加到ASP中的request.cookies()集合中。在浏览器往返之后,cookie将仅在request.cookies范围内可见。这不同于常规的response.cookies()命令,它将使cookie在同一请求中的request.cookies范围内可用。 – 2016-09-27 08:07:26

This page有很多这是有关您的问题的信息。

.NET 1.1不添加HttpOnly,因为它还没有被发明。

如果您的应用程序将在.NET 2.0下运行(我几次将几个经典ASP站点移动到几乎不变)HttpOnly默认设置。

如果我正确地读了他,你可以得到会话cookie并附加; HttpOnly;它。他举了一个Java示例:

String sessionid = request.getSession().getId(); 
response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; HttpOnly"); 

最后,他建议:

如果代码改变是不可行的,web应用防火墙可以用来仅Http添加到会话Cookie

编辑对于那些认为迁移到.NET(可以适应大多数传统ASP代码不变)的人来说,将添加到想要获得如此小功能的过于剧烈的变化中,我对ISAPI过滤器的体验就是,可能是一大痛苦,在一些常见情况下(共享主机),您根本无法使用它们。

+5

对不起,如果你的downvotes不清楚,但改变你的整个网站从传统的ASP到.NET似乎是一个相当重要的任务,只是为了获得HttpOnly会话cookie。我认为这是降低赞誉的原因。 – 2011-03-09 02:23:01

微软包括使用ISAPI筛选器所有出站的cookies的例子:http://msdn.microsoft.com/en-us/library/ms972826

或URL重写可用于http://forums.iis.net/p/1168473/1946312.aspx

<rewrite> 
     <outboundRules> 
      <rule name="Add HttpOnly" preCondition="No HttpOnly"> 
       <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" /> 
       <action type="Rewrite" value="{R:0}; HttpOnly" /> 
       <conditions> 
       </conditions> 
      </rule> 
      <preConditions> 
       <preCondition name="No HttpOnly"> 
        <add input="{RESPONSE_Set_Cookie}" pattern="." /> 
        <add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" /> 
       </preCondition> 
      </preConditions> 
     </outboundRules> 
    </rewrite> 
+8

虽然这个工程 - 我不得不建议,如果你的任何经典ASP页面有Response.Buffer = false,该页面将是纯粹的垃圾。 – Jason 2011-10-18 20:56:13

+0

任何人都有问题来实现这个代码,你必须首先启用IIS的URL重写[http://www.iis.net/downloads/microsoft/url-rewrite] – MarceloBarbosa 2015-05-07 21:27:50

+0

对我来说,开发工具中的HTTP标志设置为true ,但一秒后,该标志将被删除。这与使用HTTPS有关吗? – 2017-09-26 17:44:44

我编译Microsoft's ISAPI filter example。这解决了我的问题。

的ISAPI DLL是here

随意下载。

如果您有IIS7 +,则需要确保已安装URL Rewrite模块。您可以使用Web Platform Installer进行安装。您可以在网站的功能视图中找到Web平台安装程序。您需要以管理员身份运行IIS管理器。在功能

Run IIS As Administratro

单击Web平台安装程序查看您的网站:

Web Platform Installer

设备确保安装了URL重写服务器产品。如果不是,则安装它。

Url Rewrite Server Product

在安装URL重写服务器产品,则可以使用URL重写功能在您的网站添加规则添加的HttpOnly您的会话ID的Cookie。

URL Rewrite Feature

enter image description here

Add HttpOnly Outbound Rule

您应该看到,如果它不存在,你的ASP网站创建一个web.config文件。它有以下内容:

enter image description here

如果你使用Firefox中的Firebug检查你的cookies,您现在应该看到的HttpOnly标志设置:

enter image description here

+1

那么解释..伟大的工作! – 2015-09-08 14:53:07