CRLF (\ r \ n) в функции заголовка () PHP - PullRequest
1 голос
/ 24 сентября 2010

Почему / когда нужно использовать CRLF в конце заголовка в PHP? Вот один пример (это не обязательно правильно):

header("method: POST\r\n");
header('Host: '.get_option('transact_url')."\r\n");
header('Content-type: application/x-www-form-urlencoded');
header('Content-length: '.strlen($transaction)."\r\n");
header($transaction."\r\n\r\n");
header("Connection: close\r\n\r\n");
header("Location: ".$key_client_url."\r\n");

Ответы [ 5 ]

5 голосов
/ 24 сентября 2010

Вы никогда не должны делать разрывы строк внутри заголовка (). Текущая реализация удаляет разрывы строк, чтобы вы были в безопасности, но это может измениться в будущем (хотя нет причин, по которым его следует менять).

3 голосов
/ 24 сентября 2010

Если это PHP, этот код бессмысленный.

Функция

header() используется для отправки ответа заголовков, в то время как некоторые из этих заголовков запроса .
Вы можете увидеть этот код, потому что тот, кто написал его, не имеет ни малейшего понятия.

0 голосов
/ 29 декабря 2017

Был способ добавить \r\n в заголовок в php 4, который был уязвимостью, которую можно было использовать, используя атаки с использованием CRLF, см. Многочисленные уязвимости PHP HTTP Header .

0 голосов
/ 24 сентября 2010

Халфдан правильный.Вот объяснение.

Строка запроса и заголовки должны заканчиваться CRLF (то есть возврат каретки с последующим переводом строки).Пустая строка должна состоять только из одного пробела и не содержать его.

    Request       = Request-Line              ; Section 5.1
                    *(( general-header        ; Section 4.5
                     | request-header         ; Section 5.3
                     | entity-header ) CRLF)  ; Section 7.1
                    CRLF
                    [ message-body ]          ; Section 4.3

source: w3c.org - Протокол передачи гипертекста - HTTP / 1.1

0 голосов
/ 24 сентября 2010

Получил мой вход в систему все смешано, поэтому я публикую, хотя это комментарий для Halfdan.Не стесняйтесь исправить это, если кто-то может.

ссылка

Я видел это в ссылке, и никто не упомянул о том, что вы только что сказали мне, поэтому я подумалэто как-то связано с окончаниями Linux.Конечно, это был единственный раз, когда я увидел "\ r \ n" в header ().

...