2015-07-29 4 views
2

Извините, если мой вопрос прост. Пожалуйста, ознакомьтесь со следующим кодом. Я знаю, что происходит.Как выполнить код в PHP

<?php 

    session_start(); 

if($_SERVER["REQUEST_METHOD"] == "POST") { 

    $username = $_POST['username']; 

    $login = $_POST['login'];} 

    else {echo "Connection Error";} 

    if(checking the fields is correct) { 

    //check it in database and if there is, assign the client session to the $_SESSION['username'] 

    $_SESSION['username'] = $username; 

    //Login success 

} 

У нас есть код, указанный выше. Если хакер не использует метод POST, и если он использует метод GET, в результате он должен получить сообщение echo "Connection Error";.

Теперь мой вопрос: если хакер использует метод GET вместо метода POST, а также он может правильно использовать имя пользователя и пароль, может ли он успешно выполнить вход в систему?

+0

В идеале должно произойти прерывание после «Ошибка соединения» или это должно быть последнее условие проверки, означает, что все ваши проверки и успех входа должны быть внутри if ($ _ SERVER ["REQUEST_METHOD"] == "POST"). –

+0

Я согласен с @codeSun, но в случае над массивом $ _POST остается пустым, поэтому проверка базы данных наверняка завершится неудачно, поэтому ничто не войдет в систему $ _SESSION. –

ответ

0

Переменные $_POST['username'] и $_POST['login'] доступны только в том случае, если пользователь отправляет запрос POST.

Я рекомендую переписывать код, как это:

<?php 

session_start(); 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    $username = $_POST['username']; 

    $login = $_POST['login']; 

    if (checking_the_fields_is_correct($username, $login)) { 

     //check it in database and if there is, assign the client session to the $_SESSION['username'] 

     $_SESSION['username'] = $username; 

     //Login success 
    } 

} else { 

    exit("Bad request"); 

} 

Но если вы действительно думаете о безопасности, я рекомендую вам взглянуть на рамках (Symfony, Laravel), которые имеют свои собственные зрелые авторизации «модули».

0

Если вы действительно заботитесь о безопасности, вы никогда не должны реализовывать аутентификацию самостоятельно. Существует много типов нападений, которые могут быть намного сложнее, тогда вы можете сопротивляться.
Используйте любую систему аутентификации (или веб-фреймворк), и это избавит вас от множества проблем!

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