Arkadaşlar, GPT ile düzelttim ancak hala 'SQL açığı var' diyor. Hâlâ anlamıyorum, SQL açığı gerçekten var mı?
PHP:
<?php
session_start();
$host = 'localhost';
$dbname = 'tasa_tsrm';
$username = 'tasa_tsrm';
$password = 'tasa_tsrm11';
// PDO bağlantısını oluşturun
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
exit();
}
if (isset($_SESSION["username"])){
header("Location: dashboard.jsp");
exit();
} else {
$notify = "";
if (isset($_GET["ref"]) && strlen($_GET["ref"]) == 6){
$stmt = $pdo->prepare("SELECT premium FROM users WHERE referrerKey = ?");
$stmt->execute([$_GET["ref"]]);
$us = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$us){
$notify .= "$(document).ready(function(){One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Geçersiz referans no!'});});";
$rfr = "";
$rfr_dis = "enabled";
} else if ($us["premium"] > time()){
$rfr = $_GET["ref"];
$rfr_dis = "disabled";
} else if ($us["premium"] < time()){
$rfr = "";
$rfr_dis = "enabled";
$notify .= "$(document).ready(function(){One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Girilen referans numarasının sahibi artık premium değil!'});});";
}
}
if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (isset($_POST["signup-username"], $_POST["signup-referrer"], $_POST["signup-password"], $_POST["signup-password-confirm"])){
$referrer = $_POST["signup-referrer"];
$username = $_POST["signup-username"];
$stmt = $pdo->prepare("SELECT premium FROM users WHERE referrerKey = ?");
$stmt->execute([$referrer]);
$us = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$us){
$notify .= "One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Geçersiz referans no!'});";
} else if ($us["premium"] < time()){
$notify .= "One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Girdilen referans numarasının sahibi artık premium değil!'});";
} else {
$stmt = $pdo->prepare("SELECT username FROM users WHERE username = ?");
$stmt->execute([$username]);
$existingUser = $stmt->fetch(PDO::FETCH_ASSOC);
if ($existingUser){
$notify .= "One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Bu kullanıcı adı daha önceden alınmış!'});";
} else {
$password = $_POST["signup-password"];
$password_1 = sha1("YuZe4oCE60tJLopk".$_POST["signup-password"]);
$password_2 = sha1("YuZe4oCE60tJLopk".$_POST["signup-password-confirm"]);
$ref_key = bin2hex(random_bytes(3));
$tkn = sha1(bin2hex(random_bytes(24)));
if ($password_1 == $password_2){
if (strlen($username) >= 4 || strlen($password) >= 8){
$date = time();
$queryLimit = 30;
$sessionExpire = 1500;
$verify = 1;
$warn = 0;
$admin = 0;
$ban = 0;
$bypass = 0;
$query = 0;
$totalLimit = 0;
$activity = 0;
$premium = strtotime('+1 month');
$userDef = "1 AYLIK";
$ua = $_SERVER['HTTP_USER_AGENT'];
$stmt = $conn->prepare("INSERT INTO users (username, password, userReferrer, referrerKey, token, queryLimit, sessionExpire, verify, premium, userDef, warn, admin, ban, bypass, query, totalLimit, activity) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssssiisiiiiiii", $username, $password_1, $referrer, $ref_key, $tkn, $queryLimit, $sessionExpire, $verify, $premium, $userDef, $warn, $admin, $ban, $bypass, $query, $totalLimit, $activity);
$stmt->execute();
header("Location: giris.jsp");
exit();
} else {
$notify .= "One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Kısa karakter tespit edildi istenilen karakter sayısında kullanıcı adı ve şifre girin!'});";
}
} else {
$notify .= "One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Girilen parolalar eşleşmiyor!'});";
}
}
}
} else {
$notify .= "One.helpers('jq-notify', {type: 'warning', icon: 'fa-solid fa-triangle-exclamation me-1', message: 'Gerekli tüm alanları doldurun!'});";
}
}
}
?>
Son düzenleyen: Moderatör: