Запись переменных PHP SERVER в базу данных - PullRequest
1 голос
/ 24 января 2011

Я планирую записать все переменные PHP $ _SERVER , которые не являются статичными для всех запросов (например, SERVER_SIGNATURE), в таблицу базы данных.У меня два вопроса:

1) Существует ли максимальная длина полей, таких как HTTP_ACCEPT и т. Д.?Я использую следующую структуру.Это не оптимизировано и не самое лучшее, а просто стартовое указание.Любые ссылки, где я могу найти максимальные длины для некоторых / всех переменных, будут полезны.

2) Разумно ли хранить PHP_AUTH_USER и PHP_AUTH_PW?Может ли это привести к проблемам безопасности?С другой стороны, могут ли эти поля быть когда-либо даже полезными для анализа трафика?

Примечание:

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

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

Соответствующая часть таблицы выглядит следующим образом:

`PHP_SELF` varchar(1024) NOT NULL,
`SERVER_PROTOCOL` varchar(128) NOT NULL,
`REQUEST_METHOD` varchar(128) NOT NULL,
`REQUEST_TIME` timestamp NOT NULL,
`QUERY_STRING` varchar(4096) NOT NULL,
`DOCUMENT_ROOT` varchar(512) NOT NULL,
`HTTP_ACCEPT` varchar(2048) NOT NULL,
`HTTP_ACCEPT_CHARSET` varchar(2048) NOT NULL,
`HTTP_ACCEPT_ENCODING` varchar(2048) NOT NULL,
`HTTP_ACCEPT_LANGUAGE` varchar(2048) NOT NULL,
`HTTP_CONNECTION` varchar(1024) NOT NULL,
`HTTP_HOST` varchar(1024) NOT NULL,
`HTTP_REFERER` varchar(4096) NOT NULL,
`HTTP_USER_AGENT` varchar(4096) NOT NULL,
`HTTPS` varchar(128) NOT NULL,
`REMOTE_ADDR` varchar(64) NOT NULL,
`REMOTE_PORT` varchar(128) NOT NULL,
`SCRIPT_FILENAME` varchar(512) NOT NULL,
`SERVER_PORT` varchar(128) NOT NULL,
`SCRIPT_NAME` varchar(512) NOT NULL,
`REQUEST_URI` varchar(4096) NOT NULL,
`PHP_AUTH_DIGEST` varchar(512) NOT NULL,
`PHP_AUTH_USER` varchar(512) NOT NULL,
`PHP_AUTH_PW` varchar(512) NOT NULL,
`AUTH_TYPE` varchar(512) NOT NULL,
`PATH_INFO` varchar(4096) NOT NULL,
`ORIG_PATH_INFO` varchar(4096) NOT NULL,

Ответы [ 2 ]

0 голосов
/ 24 января 2011

2) Разумно ли хранить PHP_AUTH_USER и PHP_AUTH_PW?Может ли это привести к проблемам безопасности?С другой стороны, могут ли эти поля быть хоть когда-нибудь полезными для анализа трафика?

Я бы посоветовал не хранить PHP_AUTH_PW?, за исключением анализа пользовательских паролей для личных предпочтений, это действительно так.не поможет вам в любом случае.НО это может вызвать большие проблемы, если кто-то узнает, что вы сохраняете данные такого типа (в случае, если вам не разрешено (что может быть так)), или если кто-то каким-то образом получает доступ к вашей базе данных и использует эти user / pwdsчтобы получить доступ к учетным записям.

PHP_AUTH_USER может иметь некоторое отношение.И сохранение только логина пользователя не создает проблем с безопасностью.

0 голосов
/ 24 января 2011

Общепринятая максимальная длина (фактически используемая в Apache httpd, например) для данного заголовка составляет 8 КБ. (8192 байта)

Проблемы безопасности при хранении этих данных будут такими же, как при хранении любых предоставленных пользователем данных. Используйте привязку параметров (например, как предложено PDO). Не рассчитывайте просто на то, что вам не хватает строк.

Существуют и другие факторы производительности вашей схемы базы данных. Возможно, вы захотите изменить столбцы на тип TEXT из-за this :

( Каждая таблица (независимо от механизма хранения) имеет максимальный размер строки 65 535 байт. [..] Столбцы BLOB и TEXT считаются в [9-12] байтов на столбец в направлении ограничения размера строки, поскольку содержимое эти столбцы хранятся отдельно от остальной части строки )

...