Logowanie to jest używane tylko przez 2 osoby ale do bardzo wrażliwych danych więc mam następujące pytanie: czy jest bezpieczne? Może popełniłem jakiś błąd który może powodować "włam"? Dzięki z góry za odpowiedź

login.php
<?php require 'dbsoft.php'; $password = $_POST['password']; $sekret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; $sprawdz = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$sekret.'&response='.$_POST['g-recaptcha-response']); $odpowiedz = json_decode($sprawdz); if ($odpowiedz->success==false) { $_SESSION['e_bot']="Potwierdź, że nie jesteś botem!"; } $sql = 'SELECT * FROM account WHERE email=?'; $statement = $connection->prepare($sql); $statement->execute([$email]); $oz = $statement->rowCount(); if($oz>0){ $row = $statement->fetchAll(PDO::FETCH_OBJ); foreach($row as $rows): $password_base = $rows->password; $email = $rows->email; $id_base = $rows->id; endforeach; if (password_verify($password, $password_base)) { $_SESSION['verify'] = true; $_SESSION['id_session'] = $id_base; function random(int $i) { return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($i/strlen($x)) )),1,$i); } $code = random(35); $sql = "INSERT INTO verify_code (id_user, code, date, status_code) VALUES (?, ?, ?, ?)"; $connection->prepare($sql)->execute([$id_base, $code, $now, 0]); $message="Kod do weryfikacji:\n\n$code\n\nWiadomosc zostala wygenerowana automatycznie: $time"; $sender="From: domena.pl"; $statement = null; $connection = null; } else { $_SESSION['error'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>'; $statement = null; $connection = null; } } else { $_SESSION['error'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>'; $statement = null; $connection = null; } $statement = null; $connection = null; ?>
verify_check.php:
<?php { } $_SESSION['error'] = '<span style="color:red">Nie podano kodu</span>'; } require '../database_connect/dbsoft.php'; $sql = 'SELECT * FROM verify_code WHERE code=?'; $statement = $connection->prepare($sql); $statement->execute([$code]); $row = $statement->fetchAll(PDO::FETCH_OBJ); foreach($row as $rows): $id_user = $rows->id_user; $date = $rows->date; $code_base = $rows->code; $status_base = $rows->status_code; $ide = $rows->id; endforeach; if($status_base == 0){ if($code_base == $code){ if($_SESSION['id_session'] == $id_user){ if($now <= $date){ $_SESSION['admin'] = true; $st = 1; $sql = "UPDATE verify_code SET status_code=? WHERE id=?"; $statement = $connection->prepare($sql); $statement->execute([$st, $ide]); $statement = null; $connection = null; }else{ } }else{ } }else{ } }else{ }
Jeśli jest dobrze to proszę też o odpowiedź
