Являются ли секретные строки запроса разумным способом ограничения доступа и скрытия контента на незащищенном сайте? - PullRequest
3 голосов
/ 23 июня 2011

Так что я скажу сразу, очевидно, я знаю, что это на самом деле не безопасно , не бейте меня за это. Мне просто интересен вопрос с точки зрения лени.

У меня есть веб-сайт, на котором есть информация, которую я хотел бы «скрыть» от широкой публики. Ничего важного или уязвимого; Я просто не хочу, чтобы люди нашли это и связались с этим. У меня уже есть файл robots.txt, запрещающий сканирование. На этой странице нет ссылок (или ссылок с других сайтов на этот сайт).

Настройка

example.com перенаправляет вас на страницу «Вам запрещен доступ», тогда как example.com? Real = fun фактически возвращает вам контент. PHP на самом деле не запустит страницу, если пара ключей / значений запроса не верна. Поэтому разумно ли мне предполагать, что никто не найдет эту страницу случайно, и, по их мнению, они не смогут попасть в контент?

Да, я ленивый, но я все еще хотел бы знать.

редактировать • Я не ищу "как это сделать". Я уже сделал это. Правильный ответ будет адресован, если у человека есть другие основные способы попасть на страницу, которая использует эту технику.

Ответы [ 6 ]

2 голосов
/ 23 июня 2011

«Разумный» определяется контекстом. Страница новинки, на которой нет ничего особо чувствительного? Конечно. Просто имейте в виду, что если вы когда-либо отправляли «скрытую» ссылку кому-либо, они с такой же легкостью могут опубликовать ее в каком-либо чате IRC где-нибудь, или кто-то может просмотреть историю вашего браузера, пока вы находитесь вдали от своего клавиатура. Помните, что любой, кто знает о http://example.com/index.php?real=fun, может попасть туда. «Никто не может знать» не поможет вам, когда они узнают.

Теперь, если вы действительно заинтересованы в безопасности, вы можете установить временное значение идентификатора в базе данных где-нибудь, со случайно сгенерированным 6 или 8 символьным хешем и датой истечения (скажем, одного дня). Отправьте электронное письмо другу example.com/index.php?real=8AC02F, и он будет иметь доступ к этому контенту в течение дня или около того. Напишите сценарий с паролем, чтобы сгенерировать хэш и дату истечения срока действия и сохранить их в базе данных.

Не забудьте скрипт cron для удаления устаревших хэшей, вы не хотите создавать беспорядок.

2 голосов
/ 23 июня 2011

Это, конечно, лучший способ «спрятать» что-то, чем ввести пароль.Защищенный паролем сайт, очевидно, подразумевает, что за забором что-то скрывается, в то время как строка секретного запроса по сути ничего не выдает.

С другой стороны, если секретная строка утечка, то ваша система безопасности будет взорванаЯ бы предложил дублирование и запуск обычной страницы входа в систему, если будет предоставлен секретный запрос.Тогда вы можете работать без необходимости держать строку запроса в поле зрения URL (и не будет отображаться в журналах реферера других сайтов, если вы ссылаетесь на что-то внешнее).

Таким образом вы получаете безопасностьнеобходимого входа в систему, с дополнительной безопасностью, даже не имея очевидных «у вас защищенный контент».

1 голос
/ 23 июня 2011

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

  1. Основная предпосылка аутентификации Система должна установить cookie или сеанс идентификатор, который вы можете проверить, чтобы увидеть, если пользователь залогинен на каждой странице, которую вы хочу защитить. Это не так сложно! Просто не устанавливайте в качестве значения сеанса то, что вы не хотите угонять.
  2. Apache может позволить вам защитить файлы или папки, что является быстрым и грязный способ не пускать людей чего-то.
  3. Есть очень хорошие открытые системы аутентификации источника, которые могут быть относительно легко прикрутить.
  4. Простые такие вот как можно дать вам всю систему аутентификации, в основном сделано и готово к работе.
1 голос
/ 23 июня 2011

Вы полагаетесь на безопасность из-за неясности. Это работает в определенной степени, но вы не должны на это рассчитывать. Ответ на ваш вопрос «да», это разумно, но не полагайтесь на это в производстве.

Лучший способ сделать это - использовать Basic Http Auth , чтобы разрешить доступ к странице (S) только лицам с учетными данными.

Несколько более ленивым способом было бы отобразить форму без информации, и им пришлось бы ввести некоторую случайную строку и отправить ее. Если строка верна, на сервере будет установлен сеанс, который позволит им получить доступ к странице.

1 голос
/ 23 июня 2011

Да, разумно предположить, что они не смогут получить доступ к содержимому, потому что Apache увидит запрос index.php и просто разгрузит ресурс.Нет никакого способа, которым они могут просто догадаться, что вы жестко запрограммировали на бэкэнд-сервере, если только это не похоже на какой-то общий веб-хостинг и другие пользователи на сервере могут видеть содержимое вашего каталога.файла index.php для корня www.example.com

if (empty($_GET))
    exit("nothing to see here"); 
elseif ($_GET['real'] != 'fun')
    exit("nothing to see here"); 
0 голосов
/ 23 июня 2011

Вы спрашиваете, является ли это решение "разумным".Поскольку вы явно не имеете в виду «безопасный», неясно, что вы делаете .Я предполагаю, что вы имеете в виду «возможно и легко осуществить», и в этом случае ответ будет да .Но не стесняйтесь редактировать свой вопрос, чтобы сделать его более понятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...