Это безопасная система входа в систему для панели администратора?

0

Это код для входа в мою страницу

<?php
//simple PHP login script using Session
//start the session * this is important
session_start();

//login script
if(isset($_REQUEST['ch']) && $_REQUEST['ch'] == 'login'){

//give your login credentials here
if($_REQUEST['uname'] == 'my_name' && $_REQUEST['pass'] == 'my_password')
$_SESSION['login_user'] = 1;
else
$_SESSION['login_msg'] = 1;
}

//get the page name where to redirect
if(isset($_REQUEST['pagename']))
$pagename = $_REQUEST['pagename'];

//logout script
if(isset($_REQUEST['ch']) && $_REQUEST['ch'] == 'logout'){
unset($_SESSION['login_user']);
header('Location:login.php');
}
if(isset($_SESSION['login_user'])){
if(isset($_REQUEST['pagename']))
header('Location:'.$pagename.'.php');
else
header('Location:admin.php');
}else{
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Website</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" type="text/css" href="styles.css" media="all" />


</head>
<body>

<form name="login_form" method="post" action="">
<h2 align="center"><strong>Admin Login</strong></h2>

<input type="text" name="uname" id="uname" placeholder="Username">
<input type="password" name="pass" id="pass" placeholder="Password">

<td colspan="2" align="center">
<p style="color:red;">
<?php
//display the error msg if the login credentials are wrong!
if(isset($_SESSION['login_msg'])){
echo 'Wrong username and password !';
unset($_SESSION['login_msg']);
}
?>
</p>

<div align="center" colspan="2"><input type="submit" value="Login"></div>
</tr>
<input type="hidden" name="ch" value="login">
</form>
</body>
</html>

Я скопировал это с веб-сайта, поэтому я не уверен, насколько он безопасен. И я тоже не очень хорош с php.

безопасно ли это использовать или его легко взломать? если это не может кто-нибудь сказать мне, какая самая лучшая система входа в систему MySQL?

  • 0
    Этот вопрос кажется не по теме, потому что это запрос на проверку кода. Это лучше подходит для codereview.stackexchange.com
  • 0
    Ох ... Я не знал, что для этого есть сайт.
Показать ещё 3 комментария
Теги:
security
login
admin

1 ответ

3
Лучший ответ

$ _REQUEST, по умолчанию, содержит содержимое $ _GET, $ _POST и $ _COOKIE.

Но это только дефолт, который зависит от variables_order; и не уверен, что вы хотите работать с файлами cookie.

Если бы мне пришлось выбирать, я бы, вероятно, не использовал $ _REQUEST, и я бы выбрал $ _GET или $ _POST - в зависимости от того, что должно делать мое приложение (то есть того или другого, но не обоих): вообще говоря:

Вы должны использовать $ _GET, когда кто-то запрашивает данные из вашего приложения. И вы должны использовать $ _POST, когда кто-то нажимает (вставляя или обновляя или удаляя) данные в ваше приложение. В любом случае, не будет большой разницы в производительности: разница будет незначительной, по сравнению с остальной частью вашего скрипта.

Кроме того, вам может потребоваться проверить XSS и CSRF. Однако это действительно зависит от требований приложения. Я ненавижу быть тупым, но IMHO это не похоже на безопасный или практичный блок ввода кода. Кроме того, могу ли я спросить, почему вы не планируете использовать БД? Использование сохраненных текстовых паролей не очень безопасно.

Приведенное ниже применяется, если вы планируете использовать БД. Ваш код не проверяет db для нескольких пользователей. Он в основном проверяет сохраненный пароль. Поэтому практичность приложения будет очень ограничена, если вы не используете db для поддержки нескольких пользователей. Кроме того, если вы собираетесь использовать db для хранения и получения значений, вам нужно убедиться, что пользователь вводит защищенные от SQL инъекции. Плюс было бы разумно зашифровать пароли, используя md5, соль, sha1 или комбинацию. Многие ребята используют комбинацию шифрования.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню