下面是一个处理登录脚本的页面,我想知道我是否在其中放置了任何安全漏洞。我一直在阅读有关防止注入(inject)和其他攻击的文章,并希望确保我的代码是安全的。
通过ajax提交,根据登录是否正确返回JSON。
<?php
ob_start();
session_start();
include ("config.inc.php");
include ("jsonEncode.php");
// ausername and apassword sent from form
$ausername = '';
$apassword = '';
$ausername = mysql_real_escape_string(stripslashes($_GET['username']));
$apassword = mysql_real_escape_string(stripslashes($_GET['password']));
$sql = "SELECT * FROM admin WHERE ausername='$ausername' AND apassword='$apassword' LIMIT 1";
$result = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_array($result);
$count = mysql_num_rows($result);
if($count==1){
$_SESSION['ausername'] = $ausername;
$_SESSION['apassword'] = $apassword;
$_SESSION['admin_id'] = $data['a_id'];
$a_id = $data['a_id'];
$_SESSION['LastLogin'] = $data['last_login'];
$query = "UPDATE admin SET last_login = Now() WHERE `a_id`= $a_id";
mysql_query($query);
//echo $query;
$_SESSION['aloggedin'] = "1234";
// valid
$var = array('avalid' => 1, 'ausername' => $ausername, 'apassword' => $apassword);
print php_json_encode($var);
}else{
// invalid
$var = array('avalid' => 0, 'ausername' => $ausername, 'apassword' => $apassword);
print php_json_encode($var);
}
?>
最佳答案
您可能希望在登录表单中使用 POST 方法而不是 GET 方法,否则他们的密码将出现在 URL 中并且 URL 不是很安全(它们可能会被添加为书签或作为推荐 URL 发送到另一台服务器,因为示例)。
关于php - 使用 mysql_real_escape_string 我的 SQL 请求是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/552108/