MySQL – die besten Beiträge

Python API Spam Prevention?

Hallo Freunde,

ich nutze ein Python Script das automatisch nach erfolgreicher Registrierung ein JSON String zu meiner Website sendet, per requests.post im Format: https://[URL]/upload.php

Von dort werden die Daten verarbeitet und in der Datenbank eingetragen.

Nun ist mir aber klar, dass natürlich jeder theoretisch die URL entnehmen könnte, und ein kleines Script erstellen kann, das permanent Anfragen sendet und damit die Datenbank mit Invalider Daten füllt.

Nun würde ich gerne erfahren, was man dagegen tun kann!

Mit freundlichen Grüßen

SQL, Webseite, Code, Datenbank, MySQL, PHP, Python, Python 3, JSON

Fehler bei password verify php?

Ich habe ein Testprogramm geschrieben, in dem man ein Passwort eingibt, dass dann gehasht in einer Datenbank gespeichert wird. Wenn ich mit dem Passwort vergleiche kommt aber nicht true sondern false raus. Das ganze habe ich in WebFTP gemacht.

Als Ausgabe bekomme ich:

123456789 $2y$10$4TMgUO3xGJMCy5iZnd6Be.TBRkIO2Z55GGwgQ5oeToD.ryJZAvvte Richtig In Datenbank übertragen $2y$10$4TMgUO3xGJMCy5iZnd6Be.TBRkIO2Z55GGwgQ5oeToD.ryJZAvvte Falsch Richtig übertragen

Bedeutet das gehashte Passwort wurde richtig gespeichert, aber passwort verify hat beim zweiten mal false zurück gegeben.

Hier ist der php Teil dazu:

<?php
if (isset($_POST["start"])) {
    $password = $_POST["password"];
    $email = $_POST["email"];
    echo $password . " ";
    $passwordHash = password_hash($password, PASSWORD_DEFAULT);
    echo $passwordHash . " ";
    if (password_verify($password, $passwordHash)){
        echo "Richtig ";
    }else{
        echo "Falsch ";
    }
    require_once "data.php"; //Hier wird die Datenbankverbindung gespeichert
    $statement = $pdo->prepare("INSERT INTO tab (email, password) VALUES (?, ?)");
    $statement->execute(array($email, $passwordHash));
    if ($statement){
        echo "In Datenbank übertragen ";
        $sql = "SELECT * FROM tab WHERE email='$email'";
        $user = $pdo->query($sql)->fetch();
        $passwordTest = $user["password"];
        echo $passwordTest . " ";
        if (password_verify($password, $passwordTest)){
            echo "Richtig ";
        }else{
            echo "Falsch ";
            if ($passwordHash == $passwordTest){
                echo "Richtig übertragen ";
            }else{
                echo "Falsch übertragen ";
            }
        }
        die();
    }else{
        die("Es ist etwas schief gelaufen");
    }
}
?>
SQL, HTML, Webseite, CSS, JavaScript, HTML5, Code, Datenbank, MySQL, PHP, Programmiersprache, Webdesign, Webentwicklung, phpMyAdmin

Ist es normal, dass ein nicht öffentlicher privater Testserver ohne wichtige Daten in <24 Stunden Ziel eines Ransomangriffs wird?

Ich hatte hier auf gf.net erst vor ein paar Tagen wegen eines Port-konfigurationsproblem gefragt, dann eine scheinbare Lösung gefunden und jetzt nach nicht einmal 24 Stunden Testbetrieb scheint es bereits einen ersten Hackingangriff gegeben zu haben...

Angriff = Mongo Datenbank wurde gelöscht und durch eine andere DB ersetzt, die eine Readme enthält, doch bitte 0,0065 BTC (ca. 400€) zu unbekannter Wallet zu überweisen, damit im Anschluss die DB von russischer Domain wieder freigegeben wird!

Oder könnte evtl. meine Problembeschreibung hier auf gf.net vor wenigen Tagen mit diesem Angriff in Zusammenhang stehen? Ich hatte (dummererweise?!) ein paar Port und Prozess ID's und den Namen des Benutzers aus einem Terminal Log geposted, aber keine reale IP Adresse oder Passwörter. Die IP/Domain des Servers ist normalerweise bislang nur mir bekannt und es befand sich noch keine fertige Webseite sondern nur ein paar unwichtige Testscripte & Test DB darauf. Irgendwelche Ideen oder Tipps, insbesondere was diese ach so coolen Hacker jetzt damit bezwecken? Und wie macht man nun am Besten weiter? Den Server ganz Platt machen und wieder von vorne anfangen? Den Hoster wechseln?

Server, Linux, IT, Datenbank, Erpressung, Hacker, Hackerangriff, IP-Adresse, Malware, MySQL, Port, Trojaner, Verschlüsselung, Webentwicklung, Authentifizierung, Ransomware, MongoDB, Debian 10

Wie vergleiche ich PHP Variablen mit unterschiedlicher Codierung?

Hallo liebe Community.

Ich suche die Lösung für ein Problem bei der Programmierung mit PHP und Variablen.

Ich möchte gerne einen Wert, den ich über mysqli abgerufen habe mit einer Variable aus einem Array vergleichen.

Das Problem dabei ist, dass bei Umlauten und Sonderzeichen das Programm nicht mitmacht. Die beiden verglichenen Werte müssten gleich sein, werden aber nicht als gleich erkannt.

Hier mein Beispiel:

Datenbank:

id --- vorname --- nachname

1 --- Sabrina --- M&uuml;ller

PHP:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  

(Hier ein PHP Abschnitt zur Eintragung in die Datenbank, also demnach auch in UTF8 codiert)

$test = array("Sabrina","M&uuml;ller");

$result = mysqli_query($datenbank,"SELECT vorname, nachname FROM telefonbuch WHERE id='1'");

while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)) {

if($row['nachname']==$test[1])

echo "Erfolg";

else

echo "Kein Erfolg";

}

Ergebnis:

Wenn ich die Seite so aufrufe, kommt "Kein Erfolg".

Die Datenbank umfasst mehr Einträge, also alles andere ist richtig programmiert. Alles hat "Erfolg", nur die Einträge mit ä,ö,ü,ß,@, etc. haben keinen Erfolg.

Auch if($row['nachname']=='Müller') → Kein Erfolg

Auch if($row['nachname']=='M&uuml;ller') → Kein Erfolg

Auch wenn ich beide Werte vorher in Variablen packe → Kein Erfolg

Ein Test mit:

echo mb_detect_encoding($str)

Ergibt bei:

$row['nachname'] → UTF-8

$test[1] → ASCII

Wieso kann ich diese beiden Variablen nicht miteinander vergleichen und was kann ich tun, um dieses Problem mit den Umlauten zu lösen?

Vielen Dank für jede Hilfe.

Liebe Grüße =)

HTML, Webseite, Datenbank, MySQL, PHP

Meistgelesene Beiträge zum Thema MySQL