【问题标题】:Using IIS Rewrite to add HttpOnly Flag To Cookies Not Working使用 IIS 重写将 HttpOnly 标志添加到 Cookie 不起作用
【发布时间】:2014-10-29 20:28:27
【问题描述】:

我发现了许多将 HttpOnly 添加到我的 cookie 的示例,但它对我不起作用,我不知道为什么。我找到的所有示例都是相同的,我从我找到的一篇帖子中复制了这个。我在 IIS 7.0 下使用 .NET 3.5。希望有人能告诉我我做错了什么?谢谢

<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>

更新

我想出了如何打开跟踪并发现前置条件是查看所有 cookie 作为一个整体,而不是每个单独的 cookie。

所以不要评估

Set-Cookie: myC5=we have S Cookie; path=/; secure
Set-Cookie: myC6=we have S Cookie; path=/; secure
Set-Cookie: myC7=we have S Cookie; path=/; secure; HttpOnly

正在评估

myC5=we have S Cookie; path=/; secure,myC6=we have S Cookie; path=/; secure,myC7=we have S Cookie; path=/; secure; HttpOnly

因为整个字符串都有 ; HttpOnly 在里面,preCondition 失败。

我该如何克服这个问题?有什么想法吗?

【问题讨论】:

标签: iis cookies rewrite httponly


【解决方案1】:

我终于通过了这个,所以我想为可能遇到这个问题的其他人发帖。我删除了我的前置条件,只使用了条件。然后我不得不使用反向引用来获取单个 cookie。

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

希望这对将来的人有所帮助。

【讨论】:

  • 添加了答案,因为 OP 似乎不再在 SO 上处于活动状态,制作了 wiki
  • 在 IIS 7.5 Server 2008 R2 ASP Classic 上测试工作正常。许多其他例子似乎很接近,但这个答案应该是有效的。
  • 我认为匹配部分中的模式需要是“.+”而不是“.*” - 否则,会在未设置 cookie 的页面上创建空 cookie。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2023-03-17
  • 2011-08-04
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2011-05-18
相关资源
最近更新 更多