Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 13.11.2017 19:09
Ряд кривых сайтов может генерировать значения cookie (а возможно и любых заголовков) с недопустимыми символами, например:>curl --head … HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Mon, 13 Nov 2017 15:55:51 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.5.9-1ubuntu4.21 Set-Cookie: PHPSESSID=gus7n49djcd5odv906lijjcq10; path=/; HttpOnly Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: _csrf=05d0d9e4690ba910cd25dd15cf9b898e8d20c7b828b31e89e82b4cec641a8a26a%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22%E8w%F8%B7y%D50u%91%82%7D%1E%16%BFR%F3%AFK%AC%8D%A2%15z%82%BE%FC%E9+%B3R%B5%B0%22%3B%7D; path=/; httponlyВ Парсере получаем это в декодированном виде:
^curl:session{ $response[^curl:load[ $.url[…] $.ssl_verifypeer(false) ]] ^if(^response.cookies.locate[name;_csrf]){ $response.cookies.value } }
6526353df8a43d92e842e33526a5217fa09c652c687d6c7f9e651aef97bd7caea:2:{i:0;s:5:"_csrf";i:1;s:32:"Og�(wHf��m�.�z�!.��.�ek��å�e��+";}Если такое пытаться обрабатывать или, скажем, положить в БД в виде JSON — легко получить ошибки обработки строки или экранирования:
cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7EJs-escape закодирует всё non-ASCII, что избыточно.
; US-ASCII characters excluding CTLs,
; whitespace DQUOTE, comma, semicolon,
; and backslash