Cookie.HTTP только в классическом ASP - PullRequest
10 голосов
/ 29 июня 2009

Как установить для всех переменных cookie на странице значение HTTPOnly в ASP?

Ответы [ 4 ]

11 голосов
/ 11 ноября 2009

Боюсь, использование коллекции Response.Cookies не будет работать при настройке HttpOnly (меня это медленно сводит с ума!). Поскольку vbscript (по крайней мере на сервере, на котором я тестирую) будет кодировать точку с запятой.

Вместо этого добавьте заголовок вручную, например:

Response.AddHeader "Set-Cookie", "YourCookieName=YourCookieValue; path=/; HttpOnly" 

Существует аналогичный пост по stackoverflow, который называется: Как именно вы настраиваете файлы cookie HTTPOnly в ASP Classic?

1 голос
/ 09 сентября 2011

Я скомпилировал пример фильтра Microsoft ISAPI (http://msdn.microsoft.com/en-us/library/ms972826). Это решило мою проблему.

ISAPI DLL здесь https://www.dropbox.com/s/e5mq749acms0rhx/HTTPOnly.dll?dl=0

Не стесняйтесь скачать.

0 голосов
/ 02 февраля 2016

Древний вопрос, но мне пришлось самому разобраться с устаревшим приложением.

Коллекция Classic ASP Response.Cookies просто не поможет при добавлении тега HttpOnly. Вам нужно использовать

Response.AddHeader("Set-Cookie", useful_value) 

чтобы заставить это работать. Если вы попытаетесь установить атрибут Path элемента в коллекции Response.Cookies, например,

Response.Cookies["stupid"].Path = "/; HttpOnly"

он услужливо URLE кодирует точку с запятой, тем самым разрушая путь.

Итак, я выполнил пару классических функций аспина для этой цели, предложенных здесь в знак солидарности со всеми, кто живет с классическим аспином.

' given a Date item, return the text string suitable for a cookie's expires= field.
' For example: Tue, 02-Aug-2016 18:57:00 GMT
function RFC6265Date (inputDate)
  ' (we are on EST, Z-5, so offset the time. Classic ASP, no timezone support)
  dim date: date = DateAdd("h",5,inputDate)
  dim v : v = WeekdayName(Weekday(date),true) & ", "
  v = v & Right("00" & Day(date), 2) & "-" 
  v = v & MonthName(Month(date),true) & "-" & Year(date) & " "
  v = v & FormatDateTime(date,4) & ":00 GMT"

  RFC6265Date = v

end function

' make cookie header value including various security items
function RFC6265CookieValue(name, val, inputDate, domain)
'name=tok=val&tok=val&tok=val; domain=.glance.net; expires=Tue, 02-Aug-2016 18:57:00 GMT; path=/; HttpOnly; secure

    dim cv : cv = name & "="
    cv = cv & val & "; "
    if inputDate <> "" then
      cv = cv & "expires=" & RFC6265Date(inputDate) & "; "
    end if
    if domain <> "" then
      cv = cv & "domain=" & domain & "; "
    end if
    cv = cv & "path=/; HttpOnly; Secure"

    RFC6265CookieValue = cv

end function

Чтобы использовать это, назовите это так

Response.AddHeader "Set-Cookie", _
                   RFC6265CookieValue( _
                     "cookiename",  _
                     "size=big&flavor=chocolate+chip" _
                     DateAdd("yyyy", 1, Now()), domain), _
                     "example.com"

(Классический ASP похож на дискотеку. Поколение спустя, все еще отстой.)

0 голосов
/ 13 ноября 2014
Response.AddHeader "Set-Cookie", ""&CStr(Request.ServerVariables("HTTP_COOKIE"))&";path=/;HttpOnly"&""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...