2010-10-01 2 views
4

Я получаю IP-адрес для целей отслеживания, это не то, что пользователь ни вводит, ни использует его по какой-либо другой причине, кроме как отслеживать, сколько раз пользователь был на сайте.Зачем утверждать IPAddress?

Адрес хранится в базе данных и используется для проверки того, был ли клиент ранее на сайте.

Вопрос в том, может ли IP-адрес использоваться вредоносным способом? Кроме «спуфинга».

+3

Подтвердить сейчас, не беспокоиться позже. – Stephen

+1

Как этот IP-адрес получен? –

+0

Это в C#, поэтому я использую Request.UserHostAddress –

ответ

1

Большинство причин для проверки не применяются; IP будет получен из свойства Request, построенного из информации в базовом соединении, которое уже было проверено в значительной степени и, следовательно, в то время как оно могло быть подделано, его нельзя было подделать, чтобы быть тем, что на самом деле не является IP-адресом ,

Однако две причины остаются. Во-первых, недоверие к безопасности - это не только намерение, но и успех; мы можем доверять тому, что слой дает нам IP-адрес, чтобы не преднамеренно давать нам что-то еще, но мы не можем доверять ему, чтобы он был успешным в своих собственных проверках - может быть, когда-нибудь обнаружится эксплойт, в котором трюки этого слоя передаются другому. Другое заключается в том, что в зависимости от того, что вы собираетесь делать с этим IP-адресом, возможно, поддельный IP-адрес может нанести некоторый ущерб (это требует проверки за пределами просто проверки IP-адреса IP).

Контр-аргумент состоит в том, что если все, что вы делаете, регистрируется, то до тех пор, пока вы используете обычные подходы к обеспечению форматирования данных, регистрация вредоносного кода сама по себе не сделает ничего противного.

Контр-аргумент-аргумент заключается в том, что, если единственное, что вы делаете, это регистрация сегодня, это может быть не так позже в жизни проекта.

В связи с этим, валидация разумна, хотя я не буду волноваться, если увижу, что кто-то не делает этого.

Позаботьтесь о том, чтобы убедиться, что ваша валидация принимает адреса IPv6; они все еще достаточно редки, что ваше тестирование может не использовать, но достаточно распространено (и становится все более распространенным), что вы попадете в их производственный код. Вы не хотите блокировать законных пользователей, потому что вы сталкиваетесь с IPv6-адресом.

0

Я не могу придумать способ ввода любых непослушных символов, но я полагаю, что именно так вы получаете свой IP-адрес.

Всегда лучше никогда не доверять своим пользователям, особенно если речь идет о базе данных.

1

Если вы не подтвердите данные, которые вы поместили в свою базу данных, вы можете получить вредоносные данные (XSS, SQL-инъекция и т. Д.).

Перед отправкой данных в базу данных убедитесь, что данные чистые, так как вы не знаете, что будет использоваться на завтра.

3

Я считаю, что вы должны проверить IP-адрес, прежде чем она хранится в базе данных:

извлечения из HTTP запроса и хранения базы данных не всегда будет рядом друг с другом в коде. Поэтому в какой-то момент в будущем кто-то может вызвать метод хранения базы данных, используя плохие данные. Если вы сейчас напишите код, чтобы проверить его, у вас меньше шансов решить проблемы в будущем.

0

Если вы просто используете IP-адрес, полученный из запроса, тогда вам не о чем беспокоиться. Пришло время подумать о проверке, если вы получаете трафик через прокси-сервер, и вы хотите, чтобы IP-адрес пользователя, а не прокси-сервер.Это обрабатывается прокси-серверами, используя заголовок X-Forwarded-For, и этот - это, который легко подделывается, поэтому приносите любое значение здесь с щепоткой соли и немного проверки.

Смежные вопросы