2014-09-04 6 views
4

Я нашел множество примеров добавления HttpOnly в свои файлы cookie, но это не работает для меня, и я не знаю, почему. Все примеры, которые я нашел, были одинаковыми, и я скопировал это с одной из должностей, которые я нашел. Я использую .NET 3.5 в IIS 7.0. Надеюсь, кто-то может сказать мне, что я делаю неправильно? БлагодаряИспользование IIS Rewrite для добавления HttpOnly Flag To Cookies Not Working

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

UPDATE

Я понял, как включить трассировку и обнаружил, что Предпосылка смотрит на всех печеньях в целом, а не каждое отдельное печенье.

Таким образом, вместо оценки

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 терпит неудачу.

Как мне пройти мимо этого? Есть идеи?

+0

Это вполне приемлемо [ответить на свой вопрос] (http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question), вы знаете? – Liam

ответ

5

Я, наконец, получил пропуск, поэтому я хотел опубликовать для других, которые могут столкнуться с этим. Я удалил свои preConditions и только что использовал условия. Затем мне пришлось использовать обратную ссылку, чтобы добраться до одного файла 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> 

Надеюсь, это поможет кому-то в будущем.

+0

Добавлен ответ как OP, похоже, больше не активен на SO, сделал wiki – Liam

+0

Протестировано на IIS 7.5 Server 2008 R2 ASP Classic отлично работает. Многие другие примеры, казалось, были близки, но этот ответ работает так, как должен. –