PHP: Использование скрытой переменной GET в качестве логина? - PullRequest
1 голос
/ 24 марта 2012

Я смотрю на выполнение базового сценария аутентификации следующим образом:

<?php
   // admin.php
   session_start();

   if($_GET['login'] == 'adminLoginWord')
   {
       $_SESSION['auth'] = true;
   }

   if($_SESSION['auth'])
   {
       // code to show Admin control panel
   }
   else
   {
       echo 'Please login.';
   }

Поэтому, чтобы войти, кому-то нужно знать, чтобы перейти к URL

admin.php?login=adminLoginWord

Это безопасный способ аутентификации?

Ответы [ 7 ]

3 голосов
/ 24 марта 2012

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

Это говорит, всегда безопаснозависит от приложения, но если вы хотите более безопасный подход, используйте переменную POST и сравните ее следующим образом:

if($_POST['pass'] == 'password123'){
    echo 'Login OK';
}

(что по-прежнему не лучший подход, но лучше, чем переменная GET)

1 голос
/ 13 апреля 2012

В данном случае, в частности, я был просто толстым и делал это более сложным, чем нужно.

Файл .htaccess был более чем достаточен для этого ... woops!

0 голосов
/ 24 марта 2012

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

/* admin.php */
<?php

$username = "adminLoginWord";
$password = "adminLoginWordPassword";
$msg = "";

if ($_POST['mySiteUsername'] == $username && $_POST['mySitePassword'] == $password){
  $_SESSION['auth'] = true;
} else {
  $msg = "Invalid Username/Password Combination";
}

if(!$_SESSION['auto']){
  $html = "<html>
  <body>
    <div class='error'>$msg</div>
    <form action='admin.php' method='POST'>
       <label for='mySiteUsername'>Username:</label>
       <input type='text' name='mySiteUsername' />
       <label for='mySitePassword'>Password:</label>
       <input type='password' name='mySitePassword' />
    </form>
  </body>
  </html>";
} else {
  // Authorized
}
?>
0 голосов
/ 24 марта 2012

Нет, это не безопасно.

Вместо этого вы должны использовать POST, а также использовать HTTPS

0 голосов
/ 24 марта 2012

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

0 голосов
/ 24 марта 2012

Зашифруйте свой пароль и отправьте его через GET или используйте POST

0 голосов
/ 24 марта 2012

Нет, это не безопасно. Вы можете хешировать свой специальный логин с помощью sha1 и проверить, равен ли этот sha1 sha1 в adminLoginWord.

Кроме того, в вашем случае вы должны использовать POST.

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