Может ли использование пользовательского $_SERVER['HTTP_USER_AGENT'] повысить безопасность веб-сайта?

Агент с помощью пользовательского $_SERVER['HTTP_USER_AGENT'] помогает обеспечить безопасность веб-сайта?

Я использую браузер, в котором вы можете добавить и использовать свой собственный $_SERVER['HTTP_USER_AGENT']. Теперь я добавил этот скрипт на каждую страницу моей «Защищенной зоны».

<? $agent= $_SERVER['HTTP_USER_AGENT'];
$goodbrowser = 'MyCustomBrowser';
if (strstr($agent,$goodbrowser)!= true):?>
<h2 class="bd" style="margin-top:200px">You have No Authorisation<br>to access this area</h2>
exit; endif; ?>

Поможет ли это или это легко обойти? Меня (и я ожидаю, что многие другие) заинтересуют гуру веб-безопасности. Очень признателен.


person i3ry Gee    schedule 08.03.2014    source источник
comment
Ни один хороший разработчик не будет доверять пользовательскому агенту   -  person John Conde    schedule 08.03.2014
comment
Я не полностью полагаюсь на это, просто добавляя еще одно разочарование для потенциальных хакеров.   -  person i3ry Gee    schedule 09.03.2014
comment
Любимая мозоль: if ($something != true) точно такое же, как if (! $something); здесь это особенно странный выбор, так как strstr() всегда возвращает строку, так что вы действительно хотите проверить if ($something == ''). Если на то пошло, поскольку вы эффективно используете User-Agent в качестве пароля, почему бы просто не проверить if ( $agent != $goodbrowser ) и не разрешить случайные варианты, содержащие ваш пароль?   -  person IMSoP    schedule 09.03.2014


Ответы (1)


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

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

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

Ничему от клиента нельзя доверять, только измерять переменные, которыми вы можете управлять.


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

person Madara's Ghost    schedule 08.03.2014
comment
У меня есть все эти вещи и многое другое. Мои клиенты редактируют и обновляют свои собственные веб-сайты, и я добавлял это, чтобы заставить их использовать мой браузер при обновлении, который, как я знаю, является безопасным, а не их собственный браузер, который может иметь проблемы с безопасностью из-за отсутствия обновлений и т. д. - person i3ry Gee; 09.03.2014
comment
@ user1620028: Это хорошая мысль, но безопасность — это ваша работа, а не их. Вы не должны заставлять своих пользователей что-либо делать. Точно так же, как вы не доверяете их браузерам, они могут не доверять вашему. - person Madara's Ghost; 09.03.2014
comment
Спасибо за ваши разумные комментарии ранее, но этот комментарий не имеет смысла. Хорошо, слово «сила» было неудачным выбором, но если вы создали клиентский веб-сайт и предлагаете браузер с дополнительной безопасностью, вы, безусловно, делаете свою работу. Но я прошу прощения за то, что не дал понять, что браузер предназначен исключительно для администрирования веб-сайта, а не для общего просмотра веб-страниц. - person i3ry Gee; 09.03.2014