Ist der Code sicher ?

  • Hallo zusammen,

    bin noch ganz frisch bei WP vorher habe ich alles selber geschrieben nun jetzt die Frage ist folgender Code sicher vor SQL Injection ?:


    PHP
    if(isset($_COOKIE["ccid"])){	 $cctag = htmlspecialchars($_COOKIE['ccid']);	 $hashid = md5($_SERVER['REMOTE_ADDR']);	 $shop = $_SERVER['HTTP_HOST'];	 $uri = $_SERVER['REQUEST_URI'];		 	 $my_wpdb = new WPDB( 'X', 'X', 'X', 'X' );	 $allids = $my_wpdb->get_row("SELECT gid FROM counter WHERE gid = '".$hashid."' AND shop = '".$shop."' AND uri = '".$uri."'");		
    		     if(isset($allids)) {		 	 $my_wpdb->query($my_wpdb->prepare("UPDATE counter SET clicks = clicks+1 WHERE gid = '".$hashid."' AND shop = '".$shop."' AND uri = '".$uri."'"));	  }	 else { 	 $my_wpdb->insert( 'counter', array( 'cctag' => $cctag, 'gid' => $hashid, 'shop' => $shop, 'clicks' => 1, 'uri' => $uri, 'firstVisit' => date("Y-m-d H:i:s", time()) ));	  }	 }	 else {	 }	 }


    Wenn nicht könnt ihr mir weiterhelfen ?

    Hab schon in der Doku nachgeschaut unter Data Validation aber leider versteh ich das nicht so ganz.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • habe ich alles selber geschrieben nun jetzt die Frage ist folgender Code sicher vor SQL Injection ?:


    PHP
    $cctag = htmlspecialchars($_COOKIE['ccid']);     
    $hashid = md5($_SERVER['REMOTE_ADDR']);     
    $shop = $_SERVER['HTTP_HOST'];     
    $uri = $_SERVER['REQUEST_URI'];
               
    gid = '".$hashid."' AND shop = '".$shop."' AND uri = '".$uri."'"

    du vertraust deinen $_SERVER Inhalt absolut... dies macht man nicht! Selbstverständlich kann _jeder_ seine IP Adresse fälschen und die REQUEST_URI einfach so verwenden gaht überhaupt nicht


    Wenn nicht könnt ihr mir weiterhelfen ?

    Hab schon in der Doku nachgeschaut unter Data Validation aber leider versteh ich das nicht so ganz.

    was verstehst du wo nicht?

    mysqli::real_escape_string
    http://php.net/manual/de/mysqli.real-escape-string.php

    Mit offenen Augen träumen


  • du vertraust deinen $_SERVER Inhalt absolut... dies macht man nicht! Selbstverständlich kann _jeder_ seine IP Adresse fälschen und die REQUEST_URI einfach so verwenden gaht überhaupt nicht


    was verstehst du wo nicht?

    mysqli::real_escape_string
    http://php.net/manual/de/mysqli.real-escape-string.php


    Was sollte ich deiner Meinung nach anstatt $_SERVER benutzen ?

    Ja ich weiss nicht wie ich die Abfrage escapen ?

    Ein Beispiel würde mir wirklich weiterhelfen.

  • Was sollte ich deiner Meinung nach anstatt $_SERVER benutzen ?

    Du kannst selbstverständlich $_SERVER verwenden - nur dem Inhalt solltest du nicht trauen.


    Ein Beispiel würde mir wirklich weiterhelfen.

    Behandel $_SERVER wie deine $_POST oder $_GET Variablen.
    http://www.php-faq.de/q/q-security-variablen.html

    https://www.php-einfach.de/experte/php-si…sql-injections/

    Handbuch WordPress
    https://developer.wordpress.org/reference/clas…b/_real_escape/

    Mit offenen Augen träumen

  • Danke euch die Links waren wirklich Hilfreich!

    Hab das ganze umgesetzt so sollte das ganze sicher sein wenn ich richtig oder ?

    Hier der Code:

    if(isset(htmlspecialchars($_COOKIE["ccid"]))){
    $cctag = htmlspecialchars($_COOKIE['ccid']);
    $hashid = md5($_SERVER['REMOTE_ADDR']);
    $shop = htmlspecialchars($_SERVER['HTTP_HOST']);
    $uri = htmlspecialchars($_SERVER['REQUEST_URI']);
    $firstVisit = date("Y-m-d H:i:s", time());

    $my_wpdb = new WPDB( 'X', 'X', 'X', 'X' );
    $allids = $my_wpdb->query( $my_wpdb->prepare( "SELECT FROM counter WHERE counter gid = %s AND shop = %s AND uri = %s", array( $hashid, $shop, $uri ) ) );
    if(isset($allids)) {
    $my_wpdb->query( $my_wpdb->prepare( "UPDATE counter SET clicks = clicks+1 WHERE counter.gid = %s AND shop = %s AND uri = %s", array( 'gid' => $hashid, 'shop' => $shop, 'uri'=> $uri ) ) );
    }
    else {
    $my_wpdb->query( $my_wpdb->prepare( "INSERT INTO counter ( cctag, gid, shop, clicks, uri, firstVisit ) VALUES ( %d, %s, %s, %d, %s, %s )",
    array( $cctag, $hashid, $shop, 1, $uri, $firstVisit ) ) );
    }
    }
    else {
    }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!