Php секретный вопрос - PullRequest
1 голос
/ 23 июня 2009

Просто подумал

post.php

if (isset($_SESSION['id'])) {

if (isset($_POST['comment'])) {
insert()
}

<form method="post" action="post.php">

<textarea name="comment"></textarea>

<input type="submit" class="btn" value="Submit">

</form>

}

$ _ SESSION ['id'] необходимо настроить для доступа к post.php. Это достаточно безопасно?

Просто подумав, может кто-то может просто создать сеанс на своем сайте и создать свой собственный post.php и перенаправить его на мой сайт? ты можешь сделать это?

<form method="post" action="http://mysite.com/post.php">

<textarea name="comment"></textarea>


<input type="submit" class="btn" value="Submit">

</form>

Извините за мой ограниченный английский

Ответы [ 3 ]

4 голосов
/ 23 июня 2009

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

if (!isset($_SESSION['id'])) {
    // display_error();
    // redirect()
    // whatever else needs to be done
    exit;
}

// continue as planned
0 голосов
/ 23 июня 2009

Я не вижу неизбежной проблемы. если это важно, убедитесь, что данные отправляются через https, чтобы люди, перехватывающие сетевой трафик, не могли вмешиваться (как предложил Стефан Май). в противном случае это выглядит нормально - пока никто не крадет сеансовые файлы cookie ваших пользователей.

метод decezes - это просто еще один стиль кодирования. само по себе оно не повышает безопасность, но может помешать небрежным программистам совершать ошибки в виде:

if (checkIfLoggedIn()) {
  doPrivateThing();
}

doAnotherPrivateThing();  // bug: the programmer should have 
                          // put that into the if-conditional

в противном случае убедитесь, что идентификатор сеанса хранится в файле cookie и никогда не передается прозрачно через URL! В настоящее время я не уверен насчет настроек по умолчанию в php.ini, но раньше он автоматически перезаписывал URL-адреса, если cookie-файлы отключены. лучше проверь это.

Насколько я помню, ini-опция session.use_only_cookies (должна быть включена)

php / сеанс безопасности

обновление:

«Просто подумав, может быть, кто-то может просто создать сеанс на своем сайте»

нет, это не сработает. сеансы создаются при session_start(); (или иногда автоматически). $_SESSION['id'] не имеет ничего общего с session_id();, это просто некоторая переменная. хотя это не очень хорошо названо, потому что другие действительно могут запутать это (ремонтопригодность!). лучше назовите это $_SESSION['isUserLoggedIn']; или что-то в этом роде.

0 голосов
/ 23 июня 2009

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

Посмотрите на данные тампера для Firefox: https://addons.mozilla.org/en-US/firefox/addon/966

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