• 07-03-2024, 18:03:02
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhaba kolay gelsin php kodu ile sitelerde yazı aramak istiyorum istediğim yazı var ise databaseyi 1 istediğim yazı yok ise database durumunu 0 yaptırmak istiyorum fakat bir türlü çözemedim
    örnek php kodum şu şekilde ve bunun her sayfayı yenilediğimde sürekli çalışmasını istiyorum bununda javascriptle yapabiliriz.

     try {
    $sql = DB::query("UPDATE links SET durum=1 WHERE site_id=%i", $id);
    } catch(Exception $e) {
    echo $e->getMessage();
    exit;
    }
    if ($sql) {
    echo 1;
    exit;
    } else {
    echo 2;
    exit;
    }
    } else {
    
    try {
    $sql = DB::query("UPDATE links SET durum=0 WHERE site_id=%i", $id);
    } catch(Exception $e) {
    echo $e->getMessage();
    exit;
                            }
    bu konuda yardımcı olursanız çok memnun olurum iyi forumlar dilerim.
  • 07-03-2024, 18:05:13
    #2
    Konu ile alakasız lakin SQLi açığına çok müsait bir kod dostum
  • 07-03-2024, 18:35:31
    #3
    fatbotter.com
    Yazıların kontrolünün yapılacağı tabloyu da eklerseniz kontrol alanına eklemesini yapayım. GPT4'ten yararlanarak yazdırılan kod ve açıklamayı aşağıya ekledim.


    $host = 'veritabani_sunucu'; // Veritabanı sunucusu
    $dbname = 'veritabani_ismi'; // Veritabanı adı
    $user = 'kullanici_adi'; // Veritabanı kullanıcı adı
    $pass = 'sifre'; // Veritabanı şifresi
    
    try {
        // PDO veritabanı bağlantısı
        $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
        
        // Hata modunu ayarlama
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        // Yapmak istediğiniz kontrol veya işlem
        $arananYaziVarMi = true; // Örnek olarak true verdim, burada kontrolünüzü yapacaksınız.
        $id = 1; // Güncellenecek site_id değeri
        
        if ($arananYaziVarMi) {
            $durum = 1;
        } else {
            $durum = 0;
        }
    
        // Veritabanında güncelleme yapma
        $sorgu = $pdo->prepare("UPDATE links SET durum=:durum WHERE site_id=:site_id");
        $sorgu->execute([':durum' => $durum, ':site_id' => $id]);
    
        echo "Güncelleme başarılı!";
        
    } catch (PDOException $e) {
        die("Veritabanı hatası: " . $e->getMessage());
    }
    PDO (PHP Data Objects) kullanarak veritabanı işlemleri yapmanın güvenliğini sağlamak, düzgün bir şekilde yapıldığında SQL enjeksiyonu gibi güvenlik açıklarını önlemeye yardımcı olur.

    SQL Enjeksiyonu Nedir?

    SQL Enjeksiyonu, kötü niyetli kullanıcıların bir web uygulamasına zararlı SQL kodu sokarak veritabanını manipüle etmeleri, veri çalmaları veya veritabanını zarar verici şekilde değiştirmeleridir. Örneğin; bir kullanıcının giriş formundaki bir alanı kullanarak, arka planda çalışan SQL sorgusuna ek kod eklemesi.

    PDO ile Güvenlik Nasıl Sağlanır?

    PDO (PHP Data Objects) kullanarak veritabanı işlemleri yapmanın güvenliğini sağlamak, düzgün bir şekilde yapıldığında SQL enjeksiyonu gibi güvenlik açıklarını önlemeye yardımcı olur.

    SQL Enjeksiyonu Nedir?

    SQL Enjeksiyonu, kötü niyetli kullanıcıların bir web uygulamasına zararlı SQL kodu sokarak veritabanını manipüle etmeleri, veri çalmaları veya veritabanını zarar verici şekilde değiştirmeleridir. Örneğin; bir kullanıcının giriş formundaki bir alanı kullanarak, arka planda çalışan SQL sorgusuna ek kod eklemesi.

    PDO ile Güvenlik Nasıl Sağlanır?

    1. **Hazırlanmış Sorgular (Prepared Statements): ** PDO, hazırlanmış sorguları destekler. Hazırlanmış sorgular, veritabanına gönderilecek komutların (sorguların) ve bu komutlarda kullanılan verilerin birbirinden ayrılmasını sağlar. Böylece kullanıcı girdisi sorgunun bir parçası olarak değil, sadece bir parametre olarak ele alınır. Böylece kötü niyetli kullanıcılar, sorguya zarar verici kod ekleyemez.

    2. **Parametreli Sorgular: ** PDO'da, sorgularda kullanılan parametreler, sorgu ile birlikte değil, ayrı olarak veritabanına gönderilir. Böylece PDO, bu parametreleri güvenli bir şekilde işleyerek SQL enjeksiyonunu engeller.

    3. **Otomatik Tırnak İşareti Eklenmesi: ** Kullanıcı girdileri, hazırlanan sorgular kullanıldığında otomatik olarak uygun şekilde filtrelenir ve tırnak işaretleri eklenir. Böylece kullanıcı girdisi, sorgu içinde sadece bir veri olarak kabul edilir, sorguyu değiştirecek komutlar içeremez.

    Hazırlanmış sorgular ve parametreli sorgular kullanarak, kötü niyetli kullanıcıların sorgulara ekleyebileceği zararlı kodları önlemiş olursunuz. Böylece uygulamanızı SQL enjeksiyonuna karşı korumuş olursunuz.
  • 07-03-2024, 18:47:18
    #4
    CptSLap adlı üyeden alıntı: mesajı görüntüle
    Konu ile alakasız lakin SQLi açığına çok müsait bir kod dostum
    özel mesaj gönderebilir misiniz ?
  • 07-03-2024, 18:47:44
    #5
    lookout adlı üyeden alıntı: mesajı görüntüle
    Yazıların kontrolünün yapılacağı tabloyu da eklerseniz kontrol alanına eklemesini yapayım. GPT4'ten yararlanarak yazdırılan kod ve açıklamayı aşağıya ekledim.


    $host = 'veritabani_sunucu'; // Veritabanı sunucusu
    $dbname = 'veritabani_ismi'; // Veritabanı adı
    $user = 'kullanici_adi'; // Veritabanı kullanıcı adı
    $pass = 'sifre'; // Veritabanı şifresi
    
    try {
        // PDO veritabanı bağlantısı
        $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
        
        // Hata modunu ayarlama
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        // Yapmak istediğiniz kontrol veya işlem
        $arananYaziVarMi = true; // Örnek olarak true verdim, burada kontrolünüzü yapacaksınız.
        $id = 1; // Güncellenecek site_id değeri
        
        if ($arananYaziVarMi) {
            $durum = 1;
        } else {
            $durum = 0;
        }
    
        // Veritabanında güncelleme yapma
        $sorgu = $pdo->prepare("UPDATE links SET durum=:durum WHERE site_id=:site_id");
        $sorgu->execute([':durum' => $durum, ':site_id' => $id]);
    
        echo "Güncelleme başarılı!";
        
    } catch (PDOException $e) {
        die("Veritabanı hatası: " . $e->getMessage());
    }
    PDO (PHP Data Objects) kullanarak veritabanı işlemleri yapmanın güvenliğini sağlamak, düzgün bir şekilde yapıldığında SQL enjeksiyonu gibi güvenlik açıklarını önlemeye yardımcı olur.

    SQL Enjeksiyonu Nedir?

    SQL Enjeksiyonu, kötü niyetli kullanıcıların bir web uygulamasına zararlı SQL kodu sokarak veritabanını manipüle etmeleri, veri çalmaları veya veritabanını zarar verici şekilde değiştirmeleridir. Örneğin; bir kullanıcının giriş formundaki bir alanı kullanarak, arka planda çalışan SQL sorgusuna ek kod eklemesi.

    PDO ile Güvenlik Nasıl Sağlanır?

    PDO (PHP Data Objects) kullanarak veritabanı işlemleri yapmanın güvenliğini sağlamak, düzgün bir şekilde yapıldığında SQL enjeksiyonu gibi güvenlik açıklarını önlemeye yardımcı olur.

    SQL Enjeksiyonu Nedir?

    SQL Enjeksiyonu, kötü niyetli kullanıcıların bir web uygulamasına zararlı SQL kodu sokarak veritabanını manipüle etmeleri, veri çalmaları veya veritabanını zarar verici şekilde değiştirmeleridir. Örneğin; bir kullanıcının giriş formundaki bir alanı kullanarak, arka planda çalışan SQL sorgusuna ek kod eklemesi.

    PDO ile Güvenlik Nasıl Sağlanır?

    1. **Hazırlanmış Sorgular (Prepared Statements): ** PDO, hazırlanmış sorguları destekler. Hazırlanmış sorgular, veritabanına gönderilecek komutların (sorguların) ve bu komutlarda kullanılan verilerin birbirinden ayrılmasını sağlar. Böylece kullanıcı girdisi sorgunun bir parçası olarak değil, sadece bir parametre olarak ele alınır. Böylece kötü niyetli kullanıcılar, sorguya zarar verici kod ekleyemez.

    2. **Parametreli Sorgular: ** PDO'da, sorgularda kullanılan parametreler, sorgu ile birlikte değil, ayrı olarak veritabanına gönderilir. Böylece PDO, bu parametreleri güvenli bir şekilde işleyerek SQL enjeksiyonunu engeller.

    3. **Otomatik Tırnak İşareti Eklenmesi: ** Kullanıcı girdileri, hazırlanan sorgular kullanıldığında otomatik olarak uygun şekilde filtrelenir ve tırnak işaretleri eklenir. Böylece kullanıcı girdisi, sorgu içinde sadece bir veri olarak kabul edilir, sorguyu değiştirecek komutlar içeremez.

    Hazırlanmış sorgular ve parametreli sorgular kullanarak, kötü niyetli kullanıcıların sorgulara ekleyebileceği zararlı kodları önlemiş olursunuz. Böylece uygulamanızı SQL enjeksiyonuna karşı korumuş olursunuz.
    merhaba özel mesaj iletemiyorum sanırım
  • 07-03-2024, 18:48:24
    #6
    fatbotter.com
    Özel mesajla destek vermiyorum maalesef.
  • 07-03-2024, 18:53:35
    #7
    lookout adlı üyeden alıntı: mesajı görüntüle
    Özel mesajla destek vermiyorum maalesef.
    aranan kelime örnek olarak phpshell
    sql verilerini db.class.php bölümünden çekmesini istiyorum
    ve bu phpkodunu sayfanın arkasına gömsek php dosyasına girildiğinde sürekli olarak durumları güncelleyen bir javascript nasıl yazabiliriz
  • 07-03-2024, 19:01:19
    #8
    lookout adlı üyeden alıntı: mesajı görüntüle
    Yazıların kontrolünün yapılacağı tabloyu da eklerseniz kontrol alanına eklemesini yapayım. GPT4'ten yararlanarak yazdırılan kod ve açıklamayı aşağıya ekledim.


    $host = 'veritabani_sunucu'; // Veritabanı sunucusu
    $dbname = 'veritabani_ismi'; // Veritabanı adı
    $user = 'kullanici_adi'; // Veritabanı kullanıcı adı
    $pass = 'sifre'; // Veritabanı şifresi
    
    try {
        // PDO veritabanı bağlantısı
        $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
        
        // Hata modunu ayarlama
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        // Yapmak istediğiniz kontrol veya işlem
        $arananYaziVarMi = true; // Örnek olarak true verdim, burada kontrolünüzü yapacaksınız.
        $id = 1; // Güncellenecek site_id değeri
        
        if ($arananYaziVarMi) {
            $durum = 1;
        } else {
            $durum = 0;
        }
    
        // Veritabanında güncelleme yapma
        $sorgu = $pdo->prepare("UPDATE links SET durum=:durum WHERE site_id=:site_id");
        $sorgu->execute([':durum' => $durum, ':site_id' => $id]);
    
        echo "Güncelleme başarılı!";
        
    } catch (PDOException $e) {
        die("Veritabanı hatası: " . $e->getMessage());
    }
    PDO (PHP Data Objects) kullanarak veritabanı işlemleri yapmanın güvenliğini sağlamak, düzgün bir şekilde yapıldığında SQL enjeksiyonu gibi güvenlik açıklarını önlemeye yardımcı olur.

    SQL Enjeksiyonu Nedir?

    SQL Enjeksiyonu, kötü niyetli kullanıcıların bir web uygulamasına zararlı SQL kodu sokarak veritabanını manipüle etmeleri, veri çalmaları veya veritabanını zarar verici şekilde değiştirmeleridir. Örneğin; bir kullanıcının giriş formundaki bir alanı kullanarak, arka planda çalışan SQL sorgusuna ek kod eklemesi.

    PDO ile Güvenlik Nasıl Sağlanır?

    PDO (PHP Data Objects) kullanarak veritabanı işlemleri yapmanın güvenliğini sağlamak, düzgün bir şekilde yapıldığında SQL enjeksiyonu gibi güvenlik açıklarını önlemeye yardımcı olur.

    SQL Enjeksiyonu Nedir?

    SQL Enjeksiyonu, kötü niyetli kullanıcıların bir web uygulamasına zararlı SQL kodu sokarak veritabanını manipüle etmeleri, veri çalmaları veya veritabanını zarar verici şekilde değiştirmeleridir. Örneğin; bir kullanıcının giriş formundaki bir alanı kullanarak, arka planda çalışan SQL sorgusuna ek kod eklemesi.

    PDO ile Güvenlik Nasıl Sağlanır?

    1. **Hazırlanmış Sorgular (Prepared Statements): ** PDO, hazırlanmış sorguları destekler. Hazırlanmış sorgular, veritabanına gönderilecek komutların (sorguların) ve bu komutlarda kullanılan verilerin birbirinden ayrılmasını sağlar. Böylece kullanıcı girdisi sorgunun bir parçası olarak değil, sadece bir parametre olarak ele alınır. Böylece kötü niyetli kullanıcılar, sorguya zarar verici kod ekleyemez.

    2. **Parametreli Sorgular: ** PDO'da, sorgularda kullanılan parametreler, sorgu ile birlikte değil, ayrı olarak veritabanına gönderilir. Böylece PDO, bu parametreleri güvenli bir şekilde işleyerek SQL enjeksiyonunu engeller.

    3. **Otomatik Tırnak İşareti Eklenmesi: ** Kullanıcı girdileri, hazırlanan sorgular kullanıldığında otomatik olarak uygun şekilde filtrelenir ve tırnak işaretleri eklenir. Böylece kullanıcı girdisi, sorgu içinde sadece bir veri olarak kabul edilir, sorguyu değiştirecek komutlar içeremez.

    Hazırlanmış sorgular ve parametreli sorgular kullanarak, kötü niyetli kullanıcıların sorgulara ekleyebileceği zararlı kodları önlemiş olursunuz. Böylece uygulamanızı SQL enjeksiyonuna karşı korumuş olursunuz.
    aranan yazıları nasıl çekecek o bölüm boş kalmış
  • 07-03-2024, 19:17:30
    #9
    fatbotter.com
    Javascript'e ihtiyaç yok. Siz kodun en başındaki veritabanı bağlantı alanına kendi veritabanı bağlantı bilgilerinizi girin.

    islem.php adında bir dosya oluşturun ve içeriğini aşağıdaki gibi yapın, veritabanı tablo isimlerini ve sütunlarını kendinize göre düzenlemelisiniz.

    Çalıştırmak için ise aşağıdaki gibi ilgili dosyayı ziyaret etmelisiniz. phpshell yerine farklı kelime yazarak kullanabilirsiniz.

    siteadiniz.com/test.php?kelime=phpshell

    $host = 'veritabani_sunucu'; // Veritabanı sunucusu
    $dbname = 'veritabani_ismi'; // Veritabanı adı
    $user = 'kullanici_adi'; // Veritabanı kullanıcı adı
    $pass = 'sifre'; // Veritabanı şifresi
    
    $kelime = isset($_GET['kelime']) ? $_GET['kelime'] : '';
    
    try {
        // PDO veritabanı bağlantısı
        $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
        // Hata modunu ayarlama
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        // Gönderilen kelimeyi içeren içeriklerin olup olmadığını kontrol et
        $sorgu = $pdo->prepare("SELECT COUNT(*) FROM icerikler WHERE icerik LIKE :kelime");
        $sorgu->execute([':kelime' => "%$kelime%"]);
        $sayi = $sorgu->fetchColumn();
    
        // Durumu güncelle
        $durum = ($sayi > 0) ? 1 : 0;
        $sorgu = $pdo->prepare("UPDATE links SET durum=:durum WHERE site_id=:site_id");
        $sorgu->execute([':durum' => $durum, ':site_id' => 1]); // site_id'yi uygun değer ile güncelleyin
    
        echo $durum ? "Aranan kelime bulundu." : "Aranan kelime bulunamadı.";
    
    } catch (PDOException $e) {
        die("Veritabanı hatası: " . $e->getMessage());
    }