jQuery / Ajax安全吗?

时间:2018-07-21 19:25:28

标签: php jquery

我有一个简单的登录表单,该表单运行jQuery脚本,该脚本将请求发送到PHP(ajax),如果登录成功,则返回true。

我的两个问题将基于安全性。

我正在像这样通过ajax发送数据:

$.ajax({
    type: "POST",
    url: "../Php/CheckUserLogin.php",
    data: {"userName" : userName, "password" : password},
    success: function(result){
        switch(result)
        {
            case "0":
                document.getElementById('errorMessage').innerHTML = "Uspesno ste se ulogovali!";
                document.getElementById('errorMessage').style.color = "green";
                break;
            case "NEPOSTOJECI_KORISNIK":
                document.getElementById('errorMessage').innerHTML = "Korisnik ne posotoji!";
                document.getElementById('errorMessage').style.color = "red";
                break;
            case "-1":
            case "1":
                document.getElementById('errorMessage').innerHTML = "Pogresna sifra!";
                document.getElementById('errorMessage').style.color = "red";
                break;
            default:
                document.getElementById('errorMessage').innerHTML = "Greska!";
                document.getElementById('errorMessage').style.color = "red";
                break;
        }
    }
});
  • 在将其发送到PHP之前,我需要做一些input filtering吗(我正在检查字符串是否为空)?

在PHP中,我正在创建这样的sql语句:$sql = "SELECT SIFRA FROM KORISNIK WHERE IME = '$input_Username'";

  • 我是以正确的方式使用它吗?还是还有其他(更安全的)方式,例如parameters中的sql - c#

2 个答案:

答案 0 :(得分:0)

关于客户端验证,由您决定要验证什么。

在后端方面。除非您不在乎数据库中的数据,否则绝对不要使用该代码。

如果使用PDO或mysqli,则应使用准备好的语句,以便可以绑定参数。

$sql = "SELECT SIFRA FROM KORISNIK WHERE IME = :input_username";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':input_username', $input_username);

http://php.net/manual/en/pdo.prepared-statements.php

http://php.net/manual/en/mysqli.prepare.php

答案 1 :(得分:-5)

您应该在字符串中使用{$ input_Username},因为它更易读。 可以发送ajax请求,您应该检查一下字符串。

$sql = "SELECT SIFRA FROM KORISNIK WHERE IME = {$input_Username}";