$ _POST, $ _GET и Безопасность - PullRequest
2 голосов
/ 28 ноября 2011

Мне интересно, могут ли $_POST & $_GET иметь проблемы с безопасностью.

Допустим, у меня есть AJAX-код, который отправляет данные в файл PHP со следующими данными:

if(isset($_POST['id'])) {
  $client_id = mysql_real_escape_string($_POST['id']);
  $client_name = mysql_real_escape_string($_POST['name']);

    //Delete the Client
    $sql="DELETE FROM clients WHERE id='".$client_id."'";
    mysql_query($sql) or die(mysql_error());

    //Client Pages Delete
    $sql="DELETE FROM fanpages WHERE client='".$client_name."'";
    mysql_query($sql) or die(mysql_error());

Теперь предположим, что имя PHP-файла delete.php, любой пользователь может просто написать что-то вроде delete.php?id=423&name=Jack, и он выкрикнет запрос и удалит клиента?

Я думал о добавлении чека COOKIE в начале, но насколько я знаю, COOKIE тоже можно подделать, я прав?

Так, каково решение для создания безопасных $_POST & $_GET запросов с комбинацией запросов БД?

РЕДАКТИРОВАТЬ: Все это происходит внутри защищенной паролем области пользователя, но я спрашиваю о единственном файле delete.php, нужно ли мне добавлять проверку COOKIE в этот файл?

EDIT2: Скрипт работает с COOKIE, а не SESSIONS. Должен ли я также добавить SESSIONS в систему? нужно ли иметь куки и сеанс в одной системе?

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

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

session_start();

// ...

if (true === $_SESSION['userLoggedIn']) {
    // your code
}

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

Вот отличный пример!

1 голос
/ 28 ноября 2011

Эта тема предназначена для сеансов, но я уверен, что ваши куки-файлы не безопасны, как сейчас. Украсть печенье очень легко. Вы должны делать сеансы, но вам нужно убедиться, что ваш путь сеанса является приватным, и что вы не позволяете людям угонять ваш сеанс и т. Д.

PHP Session Security

1 голос
/ 28 ноября 2011

Вы должны разрешить только зарегистрированным клиентам отправлять такой сенсационный запрос. Используйте сеансы В начале файла вы будете выполнять session_start ();

тогда вы проверите $ _SESSION ["username"], если оно пустое, вы не удалите его, но если там есть имя пользователя (которое вы зададите при входе в систему), то вы проверите, есть ли у пользователя привилегия на выполнение операции.

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