基本的な ajax リクエストといくつかのフィードバックを使用するログイン システムを作成しましたが、うまく機能しています (コードは下部にあります)。
私が入力しようとしているパスワードのハッシュ化とソルト化は別として(だから、それに夢中にならないでください)、これらの要求を処理するために Ajax/jQuery を使用することのセキュリティへの影響は何ですか: 最も重要なこと:
これが純粋な PHP ではなく JS 依存であることに関して、一般的な見方は何ですか? 人々は冗長性を入れていますか? これは JS のみのサイトであると単純に言うのは正当ですか? 、そのため、JSに依存しています)。
私の PHP と JS は正しい方法で接続していますか? (そして、私のクッキーはまだ機能しますか?)
ログインに成功したときに jQuery .load() を使用してコンテンツを取り込む安全な方法を作成するにはどうすればよいですか?
システムを安全にするための一般的なアドバイスはありますか?
$(function login() { $("form .button").click(function () { // getting form values and assigning variable names var username = $("form #username").val(); var password = $("form #password").val(); var remember = $("form #remember").val(); // concatenating variables to form the data used by the Ajax post method var dataString = 'username=' + username + '&password=' + password + '&remember=' + remember; // begin Ajax post function $.ajax({ type: "POST", url: "controls/login/process.php", data: dataString, success: function (response) { if (response == 'success') { alert("SUCCESS"); } else { $('.alert').find('span').text('Incorrect username or password'); $('.alert').addClass('alert-error').fadeIn('fast'); } }, error: function () { $('.alert').find('span').text('An error occured, try again'); $('.alert').addClass('alert-error').fadeIn('fast'); } }); return false; }); });
これは
<?php
session_start();
// Starting the session
require '../../tools/db/connect.php';
// Including the database connection file
session_set_cookie_params(2*7*24*60*60);
// Making the cookie live for 2 weeks
if($_SESSION['reference'] && !isset($_COOKIE['unifyLogin']) && !$_SESSION['remember']){
// If you are logged in, but you don't have the cookie and you have not checked the remember checkbox (a browser restart), destroy the session
$_SESSION = array();
session_destroy();
echo "expired";
}
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['remember'] = (int)$_POST['remember'];
// Escaping all input data
$row = mysql_fetch_assoc(mysql_query("SELECT ID,REFERENCE FROM USER WHERE USERNAME='{$_POST['username']}' AND PASSWORD='{$_POST['password']}'"));
if($row['REFERENCE']) {
$_SESSION['secure'] = false;
// If everything is OK login
$_SESSION['id'] = $row['ID'];
$_SESSION['reference'] = $row['REFERENCE'];
$_SESSION['remember'] = $_POST['remember'];
// Store some data in the session
setcookie('unifyLogin',$_POST['remember']);
// We create the cookie
echo "success";
} else {
echo "failure";
}
?>