1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Ist der Code sicher ?

Dieses Thema im Forum "Allgemeines" wurde erstellt von casa47, 20. Januar 2018.

Schlagworte:
  1. casa47

    casa47 New Member

    Registriert seit:
    16. Januar 2018
    Beiträge:
    3
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!

    Wenn nicht könnt ihr mir weiterhelfen ?

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

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.350
    Zustimmungen:
    588

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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
     
  3. casa47

    casa47 New Member

    Registriert seit:
    16. Januar 2018
    Beiträge:
    3
    Zustimmungen:
    0


    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.
     
  4. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.664
    Zustimmungen:
    1.783
    Nein.

    $wpdb->prepare(..) wird bei $wpdb->query(..) falsch benutzt und fehlt bei $wpdb->get_row(..) ganz.
     
  5. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.350
    Zustimmungen:
    588
    Du kannst selbstverständlich $_SERVER verwenden - nur dem Inhalt solltest du nicht trauen.

    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-sicherheit/sql-injections/

    Handbuch WordPress
    https://developer.wordpress.org/reference/classes/wpdb/_real_escape/
     
  6. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.664
    Zustimmungen:
    1.783
    Man könnte einfach $wpdb->prepare(..) richtig verwenden, dann sind alle Probleme gelöst, kein "selfmade escaping" nötig, mehr dazu z.B. hier und hier.
     
  7. casa47

    casa47 New Member

    Registriert seit:
    16. Januar 2018
    Beiträge:
    3
    Zustimmungen:
    0
    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 {
    }
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden