PHP Kodunda SQL açığı var mı?

00aali00

Femtopat
Katılım
9 Ağustos 2023
Mesajlar
56
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:
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!'});";
 }
 }
}
?>

Hocam kodu incelemedim SQL açığı var mı yok mu bilmiyorum ama bu kod işleri hakkında GPT'ye asla güvenmeyin haberiniz olsun. Düzelttim yaptım dediği şeyleri yapmıyor aynı kodu gönderiyor bazen bazen dediğiniz gibi SQL hatası var diyor aslında olmayabiliyor. Kendiniz inceleyin.
 
Hocam kodu incelemedim SQL açığı var mı yok mu bilmiyorum ama bu kod işleri hakkında GPT'ye asla güvenmeyin haberiniz olsun. Düzelttim yaptım dediği şeyleri yapmıyor aynı kodu gönderiyor bazen bazen dediğiniz gibi SQL hatası var diyor aslında olmayabiliyor. Kendiniz inceleyin.
Hocam şahsen GPTye güveniyorum. Kodu GPT ile biraz daha düzenledim ve sonuç olarak SQL açığının olmadığını söylüyor.

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) {
        $ref = $_GET["ref"];
        $stmt = $pdo->prepare("SELECT premium FROM users WHERE referrerKey = ?");
        $stmt->execute([$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'];
                            $insertStmt = $pdo->prepare("INSERT INTO users (username, password, userReferrer, referrerKey, token, queryLimit, sessionExpire, verify, premium, userDef, warn, admin, ban, bypass, query, totalLimit, activity) VALUES (:username, :password, :referrer, :ref_key, :tkn, :queryLimit, :sessionExpire, :verify, :premium, :userDef, :warn, :admin, :ban, :bypass, :query, :totalLimit, :activity)");
                            $insertStmt->bindParam(':username', $username);
                            $insertStmt->bindParam(':password', $password_1);
                            $insertStmt->bindParam(':referrer', $referrer);
                            $insertStmt->bindParam(':ref_key', $ref_key);
                            $insertStmt->bindParam(':tkn', $tkn);
                            $insertStmt->bindParam(':queryLimit', $queryLimit);
                            $insertStmt->bindParam(':sessionExpire', $sessionExpire);
                            $insertStmt->bindParam(':verify', $verify);
                            $insertStmt->bindParam(':premium', $premium);
                            $insertStmt->bindParam(':userDef', $userDef);
                            $insertStmt->bindParam(':warn', $warn);
                            $insertStmt->bindParam(':admin', $admin);
                            $insertStmt->bindParam(':ban', $ban);
                            $insertStmt->bindParam(':bypass', $bypass);
                            $insertStmt->bindParam(':query', $query);
                            $insertStmt->bindParam(':totalLimit', $totalLimit);
                            $insertStmt->bindParam(':activity', $activity);
                            $insertStmt->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!'});";
        }
    }
}
?>
 

Yeni konular

Geri
Yukarı