这是管理面板的安全登录系统吗?

时间:2013-11-13 03:01:02

标签: php html security login admin

这是我网站管理页面登录的代码

<?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登录系统?

1 个答案:

答案 0 :(得分:3)

$ _ REQUEST,默认情况下,包含$ _GET,$ _POST和$ _COOKIE的内容。

但它只是一个默认值,取决于variables_order;并且不确定你是否想要使用cookies。

如果我必须选择,我可能不会使用$ _REQUEST,我会选择$ _GET或$ _POST - 取决于我的应用程序应该做什么(即一个或另一个,但不是两个):一般来说:

当有人从您的应用程序请求数据时,您应该使用$ _GET。 当有人向您的应用程序推送(插入或更新;或删除)数据时,您应该使用$ _POST。 无论哪种方式,性能都没有太大区别:与其他脚本相比,差异可以忽略不计。

此外,您可能需要检查XSS和CSRF。但是,它实际上取决于应用要求。 我讨厌直率,但恕我直言,这看起来不像一个安全或实用的登录代码块。 另外,请问您为什么不打算使用数据库?使用存储的纯文本密码根本不是很安全。

如果您打算使用数据库,则以下内容适用。 您的代码不会针对多个用户检查数据库。它主要检查存储的密码。因此,除非您使用db来支持多个用户,否则应用程序的实用性将非常有限。 此外,如果要使用db来存储和检索值,则需要确保用户输入受SQL保护的SQL注入。此外,使用md5,salt,sha1或组合加密密码是明智的。许多人使用加密组合。

相关问题