1. Einführung in die IS_Numberic -Funktion
Einige inländische CMS -Programme haben die IS_Numberic -Funktion verwendet.
bool is_numeric (gemischt $ var)
Gibt true zurück, wenn var eine numerische und eine numerische Zeichenfolge ist, ansonsten retektiert false.
2. Ist die Funktion sicher?
Schauen wir uns als nächstes ein Beispiel an, um zu veranschaulichen, ob diese Funktion sicher ist.
Die Codekopie lautet wie folgt: $ s = is_numeric ($ _ get ['s']? $ _ Get ['s']: 0;
$ sql = "In Test (Typ) Werte ($ S) einfügen;";
MySQL_Query ($ SQL);
Das obige Fragmentprogramm bestimmt, ob Parameter S eine Zahl ist, und gibt eine Nummer zurück, wenn dies nicht der Fall ist, zurückzahlen, und bringt sie dann in die Datenbankabfrage. (Auf diese Weise können SQL -Anweisungen nicht konstruiert werden)
Wir konvertieren '1 oder 1' in Hexadezimal 0x31206F722031 als Wert des S -Parameters
Nachdem das Programm ausgeführt wurde, fragen wir die Datenbank ab, wie in der folgenden Abbildung gezeigt:
Wenn Sie die Felder dieser Tabelle erneut geeignet haben und keine weitere SQL-Anweisung filtern und mitbringen, wird 2 Injektionen verursacht.
3. Zusammenfassung
Versuchen Sie, diese Funktion nicht zu verwenden. 1 oder 1 erscheinen nicht.