Свободное общение | SQL инъекция
Сижу уже неделю - полторы и не понимаю как сделать в этом скрипте защиту от этой гадости
if(isSet($_GET['exit'])) {
setCookie('id', '');
setCookie('password', '');
header('location: /');
}
}else{
$login = _string($_POST['login']);
$login = strToLower($login);
if(isset($_REQUEST['ok'])){
$user = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.$login.'"LIMIT 1'));
if(password_verify($_POST['password'], $user['password']) == true){
$key = md5(time().$login.rand(1,9999));
setcookie('token',$key,time()+3600*24*365,"","",false,true);
mysql_query("UPDATE `users` SET `autorize`='".$key."' WHERE `id`='".$user['id']."'");
header('location: /');
}
else
{
$_SESSION['no'] = '<div class="hr_g mb2"><div><div></div></div></div><div class="bntf"><div class="nl"><div class="nr cntr lose lh1 p5 nd sh">
<span class="text_red">Неправильное Имя или Пароль</span><br> </div>
<div class="hr_g mb2"><div><div></div></div></div>';
header('Location: /');
}
}
вот скрипт, и чатом гпт пробовал делать, кидает скрипты но они просто не работают, ничего не помогает, кто может помочь, помогите пожалуйста
Заранее большое спасибо!
if(isSet($_GET['exit'])) {
setCookie('id', '');
setCookie('password', '');
header('location: /');
}
}else{
$login = _string($_POST['login']);
$login = strToLower($login);
if(isset($_REQUEST['ok'])){
$user = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `login` = "'.$login.'"LIMIT 1'));
if(password_verify($_POST['password'], $user['password']) == true){
$key = md5(time().$login.rand(1,9999));
setcookie('token',$key,time()+3600*24*365,"","",false,true);
mysql_query("UPDATE `users` SET `autorize`='".$key."' WHERE `id`='".$user['id']."'");
header('location: /');
}
else
{
$_SESSION['no'] = '<div class="hr_g mb2"><div><div></div></div></div><div class="bntf"><div class="nl"><div class="nr cntr lose lh1 p5 nd sh">
<span class="text_red">Неправильное Имя или Пароль</span><br> </div>
<div class="hr_g mb2"><div><div></div></div></div>';
header('Location: /');
}
}
вот скрипт, и чатом гпт пробовал делать, кидает скрипты но они просто не работают, ничего не помогает, кто может помочь, помогите пожалуйста
Заранее большое спасибо!
<?php
// If the 'exit' parameter is set, log out the user
if (isset($_GET['exit'])) {
setcookie('id', '', time() - 3600, "/");
setcookie('password', '', time() - 3600, "/");
header('Location: /');
exit;
} else {
// Sanitize and normalize the login input
$login = strtolower(trim($_POST['login']));
// If the 'ok' parameter is set, attempt login
if (isset($_REQUEST['ok'])) {
try {
// Establish database connection using PDO
$pdo = new PDO('mysql:host=localhost;dbname=your_database_name', 'your_username', 'your_password', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
// Prepare the query to prevent SQL injection
$stmt = $pdo->prepare('SELECT * FROM `users` WHERE `login` = :login LIMIT 1');
$stmt->execute([':login' => $login]);
// Fetch user data
$user = $stmt->fetch();
// Verify the password
if ($user && password_verify($_POST['password'], $user['password'])) {
// Generate a secure token
$key = md5(time() . $login . rand(1, 9999));
setcookie('token', $key, time() + 3600 * 24 * 365, "/", "", false, true);
// Update the authorization token in the database
$stmt = $pdo->prepare('UPDATE `users` SET `autorize` = :key WHERE `id` = :id');
$stmt->execute([':key' => $key, ':id' => $user['id']]);
// Redirect to the homepage
header('Location: /');
exit;
} else {
// Set a session error message if login fails
$_SESSION['no'] = '<div class="hr_g mb2"><div><div></div></div></div>
<div class="bntf"><div class="nl"><div class="nr cntr lose lh1 p5 nd sh">
<span class="text_red">Incorrect Username or Password</span><br></div>
<div class="hr_g mb2"><div><div></div></div></div>';
header('Location: /');
exit;
}
} catch (PDOException $e) {
// Log error for debugging purposes
error_log('Database error: ' . $e->getMessage());
die('A database error occurred.');
}
}
}
?>
MARAZM , стал просто темный экран
http://a1067472.xsph.ru/
________
посл. ред. 25.01.2025 в 21:54; всего 1 раз(а); by boglol
http://a1067472.xsph.ru/
________
посл. ред. 25.01.2025 в 21:54; всего 1 раз(а); by boglol
php поменяй)))
tiqix , у меня 5.6 версия стоит, на какую и как поменять? Зарание спасибо.
Did you notice that I wrote under PDO? In line 16, you need to write the data of the database, but this is an example
<?php
session_start();
if (isset($_GET['exit'])) {
setcookie('id', '', time() - 3600);
setcookie('password', '', time() - 3600);
header('Location: /');
exit();
}
if (isset($_POST['ok'])) {
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$login = strtolower(trim($_POST['login']));
if ($stmt = $mysqli->prepare("SELECT * FROM `users` WHERE `login` = ? LIMIT 1")) {
$stmt->bind_param("s", $login);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$user = $result->fetch_assoc();
if (password_verify($_POST['password'], $user['password'])) {
$key = md5(time() . $login . rand(1, 9999));
setcookie('token', $key, time() + 3600 * 24 * 365, "/", "", false, true);
if ($updateStmt = $mysqli->prepare("UPDATE `users` SET `autorize` = ? WHERE `id` = ?")) {
$updateStmt->bind_param("si", $key, $user['id']);
$updateStmt->execute();
$updateStmt->close();
}
header('Location: /');
exit();
} else {
$_SESSION['no'] = '<div class="hr_g mb2"><div><div></div></div></div><div class="bntf"><div class="nl"><div class="nr cntr lose lh1 p5 nd sh">
<span class="text_red">Неправильное Имя или Пароль</span><br> </div>
<div class="hr_g mb2"><div><div></div></div></div>';
header('Location: /');
exit();
}
} else {
$_SESSION['no'] = '<div class="hr_g mb2"><div><div></div></div></div><div class="bntf"><div class="nl"><div class="nr cntr lose lh1 p5 nd sh">
<span class="text_red">Неправильное Имя или Пароль</span><br> </div>
<div class="hr_g mb2"><div><div></div></div></div>';
header('Location: /');
exit();
}
$stmt->close();
}
$mysqli->close();
}
?>
raiden am , установил, прописал, все так же черный экран..
boglol ,
<?php
function escape($data) {
return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
}
function generate_key($length) {
return bin2hex(random_bytes($length));
}