安全的PHP短登录API

时间:2018-01-17 22:47:49

标签: php rest

我必须为Angular Client执行Login 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();
?>

我想实现Slim php,我的同事推荐。 也许在角度客户端中散列密码。实现JSON创建的功能,并检查SQL注入。

最便宜的选择是什么?我可以轻松地在普通PHP中实现所有这些,还是更容易实现库?

谢谢!

1 个答案:

答案 0 :(得分:1)

我建议你使用JWT。 https://jwt.io/ 这是一个仅基于令牌的身份验证系统。 首先,用户使用他的登录进行身份验证 仅使用Web令牌保持“会话”打开。 必须发送令牌,以便在http标头中使用angular进行所有请求。

使用现有的库来更容易