php - 使用 mysql_real_escape_string 我的 SQL 请求是否安全?

标签 php mysql

下面是一个处理登录脚本的页面,我想知道我是否在其中放置了任何安全漏洞。我一直在阅读有关防止注入(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/

相关文章:

php - 如何在 PHP 中计算趋势线?

php - 将公式转换为 PHP

mysql - 是否有使用 utf-8 中所有可用和可打印合法字符的二进制数据的标准化编码?

php - HTML 列表框使用 PHP 更新另一个列表框

php - 如何在 Doctrine 2 中公开字段 "break lazy loading"?

php - 在 firestore (php) 中增加一个字段

MySql错误1215 : Cannot add foreign key constraint when create table

php - 创建表mysql失败时约束

mysql - 用其他表中的值替换某些记录

Python MySQL 查询结果返回额外的字符