Свободное общение | 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
<?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.'); } } } ?> http://a1067472.xsph.ru/
________
посл. ред. 25.01.2025 в 21:54; всего 1 раз(а); by boglol
php поменяй)))
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
<?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(); } ?> php
<?php function escape($data) { return htmlspecialchars($data, ENT_QUOTES, 'UTF-8'); } function generate_key($length) { return bin2hex(random_bytes($length)); }