У меня есть ряд тестов Селена C#, которые должны удалить cookie, которому установили флаг HttpOnly.
К сожалению, DefaultSelenium.GetCookie()
и DefaultSelenium.DeleteCookie()
команды не могут получить доступ к cookie, потому что ему установили тот флаг HttpOnly. Я подтвердил это путем удаления флага вручную и проверки, что последующие вызовы к любому из тех методов затем счастливо могут управлять рассматриваемым cookie.
Там какой-либо другой путь состоит в том, чтобы сделать это через Селен клиентский драйвер.NET?
Все приветствующиеся идеи!
Поскольку мне не удалось сделать это через клиентский драйвер, мне пришлось искать альтернативный метод. К счастью, тестируемое веб-приложение имеет набор тестовых страниц, которые позволяют взаимодействовать с файлом cookie сеанса (являющимся файлом cookie HttpOnly, к которому я пытался получить доступ), и поэтому я смог достичь своей цели, автоматизируя эти страницы вместо этого.
Для всех, кто сталкивается с этой проблемой, есть хороший SO-ответ здесь о том, как HttpOnly записывается в ASP.NET.
Кроме того, этот ответ SO указывает, как HttpOnly можно управлять через файл web.config приложения, с оговоркой, что его можно только включить, а не выключить.
Любой, кто хочет изменить свое приложение в целях тестирования, должен проверить этот обходной путь , в основном изменяя метод Session_Start в Global.asax, чтобы убрать флаг HttpOnly, чтобы он был доступен для клиентского скрипта. Однако этот вид обходного пути следует использовать только в тестовой среде, поскольку он открывает дыру в безопасности, которую HttpOnly был введен для закрытия, а именно уязвимость XSS. Джефф Этвуд написал об этом хороший пост в блоге здесь .