以前はMySQLを使用していましたが、安全ではないと言われたので、管理者ログインパネルをPDOに再コーディングしました。これは、ここや他のフォーラムのユーザーが挿入できないと言っています。しかし、ハッカーはまだ侵入しています...ログイン後にページを編集し、ハッキングされた人に私が何を置いたかを教えてくれと言ったところ、ハッカーは私に言った...
コードが安全かどうかを知る必要があります。彼はSQLを介して侵入していると私に言っています。
そこで、最初にIPをセッションに保存したので、IPが変更された場合は、ログアウト(またはユーザー名)されます。
if ( isset($_SESSION['last_ip']) == false )
{
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
if ( $_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR'] )
{
session_unset();
session_destroy();
}
次に、私のログインは次のとおりです。
session_start();
include 'functions/functions.php';
$db = mysqlconnect();
$password = md5($_POST['mypassword']);
$mod = 1;
$statement = $db->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$statement->execute(array($_POST['myusername'],$password));
$result = $statement->fetchObject()->mod;
$count = $statement->rowCount();
if ( $result == 1 ) {
$db = mysqlconnect();
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['user'] = $_POST['myusername'] ;
//Test if it is a shared client
if ( !empty($_SERVER['HTTP_CLIENT_IP']) ) {
$ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
} elseif ( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip=$_SERVER['REMOTE_ADDR'];
}
$sqll = "UPDATE users SET lastip=? WHERE username=?";
$q = $db->prepare($sqll);
$q->execute(array($ip,$_SESSION['username']));
$_SESSION['user'] = $_POST['myusername'] ;
$sqlll = "INSERT INTO user_log (username,ip) VALUES (?, ?)";
$qq = $db->prepare($sqlll);
$qq->execute(array($_SESSION['username'],$ip));
header("Location: home.php");
} else {
echo "Wrong Username or Password";
}
コードを挿入できますか?
そして、これは私のhome.phpページであり、ユーザーがそれを表示できないようにします。
/// My conenct is here
$sql = "SELECT * FROM users WHERE username='$_SESSION[user]'";
$result = mysql_query($sql) or die(mysql_error());
$values = mysql_fetch_array($result);
if( isset($_SESSION['user']) ) {
} else {
echo "Bye Bye";
die;
}
if ( $values['mod'] == 1 ) {
echo "welcome";
} else {
echo"Your account has been reported for hacking";
die;
}