Loading...
Свободное общение | 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: /');

}

}

вот скрипт, и чатом гпт пробовал делать, кидает скрипты но они просто не работают, ничего не помогает, кто может помочь, помогите пожалуйста
Заранее большое спасибо!
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.');         }     } } ?>   
MARAZM , стал просто темный экран
http://a1067472.xsph.ru/
________
посл. ред. 25.01.2025 в 21:54; всего 1 раз(а); by boglol
boglol (25 янв 2025, в 21:54)
MARAZM , стал просто темный экран
http://a1067472.xsph.ru/
php поменяй)))
tiqix , у меня 5.6 версия стоит, на какую и как поменять? Зарание спасибо.
boglol (25 янв 2025, в 21:54)
MARAZM , стал просто темный экран
http://a1067472.xsph.ru/
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
MARAZM , я заполнил данные от базы данных
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(); } ?>   
raiden am , установил, прописал, все так же черный экран..
boglol ,
php
   <?php  function escape($data) { return htmlspecialchars($data, ENT_QUOTES, 'UTF-8'); }  function generate_key($length) { return bin2hex(random_bytes($length)); }   
Онлайн: 1
Время:
Gen. 0.1148
(c) Bym.Guru 2010-2026