Как обезопасить классический файл cookie ASP ASPSESSIONID? - PullRequest
9 голосов
/ 05 июня 2009

Есть ли способ пометить классические файлы cookie ASP ASPSESSIONID * как безопасные? Похоже, что обработчик ASP ISAPI добавляет этот файл cookie для идентификатора сеанса после того, как моя страница завершит рендеринг, поэтому размещение кода в конце моей страницы для циклического просмотра коллекции Response.Cookie и пометить их как безопасные, похоже, не затрагивает файл cookie ASPSESSIONID * , Любой другой способ сделать это?

Ответы [ 4 ]

9 голосов
/ 05 июня 2009

Ответ: нет, нет Нет стандартного пользовательского интерфейса, предоставленного диспетчером IIS. Тем не менее, вы можете включить безопасные куки для SessionID через AspKeepSessionIDSecure Значение метабазы ​​

3 голосов
/ 04 ноября 2011

Я запускаю эту команду:

CSCRIPT C: \ Inetpub \ AdminScripts \ adsutil.vbs set w3svc / 1 / AspKeepSessionIDSecure 1

Больше информации здесь: http://blogs.msdn.com/b/rahulso/archive/2007/06/19/cookies-case-study-with-ssl-and-frames-classic-asp.aspx

1 голос
/ 22 октября 2010

[Редактировать: Вы можете игнорировать следующее. Я только что понял, что вы говорите об ASPSESSIONID.}

Имеется встроенная поддержка для безопасных файлов cookie.

См. http://msdn.microsoft.com/en-us/library/ms524757.aspx

Пример (для ASP.Net, а не Classic ASP) :

Response.Cookies("setSecure") = "someValue"
Response.Cookies("setSecure").Secure = true
0 голосов
/ 07 января 2019

Как найдено здесь , правило UrlRewrite может справиться с этим.

Приведенные ниже правила обрабатывают его для добавления HttpOnly и Secure, если они отсутствуют в файле cookie ASPSESSIONID. (Для других файлов cookie, как правило, они испускаются ASP-кодом сайта: лучше обрабатывать это непосредственно в коде, отвечающем за них.)

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="Add HttpOnly" preCondition="No HttpOnly">
        <match serverVariable="RESPONSE_Set_Cookie" pattern="\s*ASPSESSIONID.*" />
        <action type="Rewrite" value="{R:0}; HttpOnly" />
      </rule>
      <rule name="Add Secure" preCondition="No Secure">
        <match serverVariable="RESPONSE_Set_Cookie" pattern="\s*ASPSESSIONID.*" />
        <action type="Rewrite" value="{R:0}; Secure" />
        <conditions>
          <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
        </conditions>
      </rule>
      <preConditions>
        <preCondition name="No HttpOnly">
          <add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" />
        </preCondition>
        <preCondition name="No Secure" logicalGrouping="MatchAll">
          <add input="{RESPONSE_Set_Cookie}" pattern="; Secure" negate="true" />
        </preCondition>
      </preConditions>
    </outboundRules>
  </rewrite>
</system.webServer>

Если UrlRewrite не установлен на сервере IIS, это приведет к сбою сайта.

Обратите внимание, что правило Secure не должно применяться, если доступ к сайту осуществляется по закону http вместо https, то есть условие не испускать его при локальном просмотре. Если Secure отправляется на сайт, доступ к которому осуществляется через http со стороны клиента, клиент не будет отправлять cookie обратно на сервер.

(я не тестирую входящий протокол, потому что сайты, на которых я работаю, в любом случае не должны быть доступны на http, исключая, в конечном итоге, непосредственно с их хост-сервера или балансировщика нагрузки.)

Ранее я пытался использовать asp / session / keepSessionIdSecure , но это не имеет никакого эффекта (по крайней мере, для сайта за балансировщиком нагрузки, завершающего https и обращающегося к серверу сайта через http). Этот параметр является современной версией (IIS 7+) значения метабазы ​​AspKeepSessionIDSecure, на которое указывает ответ AnthonyWJones .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...