Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安全PHP短登录API_Php_Rest - Fatal编程技术网

安全PHP短登录API

安全PHP短登录API,php,rest,Php,Rest,我必须为Angular客户端执行登录API。我唯一需要的端点是登录。数据不是超敏感的,我只是想要一个简单的解决方案,足够安全,知道没有恶意的人可以轻易破坏它。 我有一些代码,但我肯定不是很好 <?php $user = ""; $pass = ""; $user = $_POST['username']; $pass = $_POST['password']; $servername = "localhost"; $usernameDB = "root"; $passwordDB = ""

我必须为Angular客户端执行登录API。我唯一需要的端点是登录。数据不是超敏感的,我只是想要一个简单的解决方案,足够安全,知道没有恶意的人可以轻易破坏它。 我有一些代码,但我肯定不是很好

<?php
$user = "";
$pass = "";
$user = $_POST['username'];
$pass = $_POST['password'];
$servername = "localhost";
$usernameDB = "root";
$passwordDB = "";

// Create connection
$conn = new mysqli($servername, $usernameDB, $passwordDB, "myDb");

header( "Access-Control-Allow-Origin: *");
header( "Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header("Content-Type: application/json; charset=UTF-8");
header ("Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT");

// Check connection
if ($conn->connect_error) {
    die('{
      "status": false,
      "error":'.$conn->connect_error .'
    }' );
}
$sql = "SELECT ID, Identificacion, Usuario, Contrasena FROM Usuarios ".
        "WHERE RptReparto_Habilitado = 1 and ".
        "Usuario = '". $user . "' and ".
        "Contrasena = '". $pass . "'";
$res = $conn->query($sql);
if ( $row = $res->fetch_assoc() ) {
    echo '{ "status": true,"id":'. $row['ID'] .' , "username": "'.$row['Usuario'].'", "identificacion": "'. $row['Identificacion'] . '"}';
} else {
    echo '{
      "status": false,
      "error": "'.$conn->error .'"
    }';
}

$conn->close();
?>

我建议您使用JWT。
这是一个仅基于令牌的身份验证系统。
首先,用户通过其登录进行身份验证
之后,仅使用web令牌保持“会话”打开。
必须为您在http头中使用angular发出的所有请求发送令牌


使用现有库更容易做到这一点

谢谢!非常有用的信息,我不会标记为已回答,因为我仍然需要SQL注入的解决方案为了避免SQL注入,您可以使用PDO,您必须进行准备好的查询,PDO完成所有的REST,“最便宜的”选项是根本不使用任何身份验证。与其便宜,不如做对!我知道,最便宜又不乱,是最好的性价比选择