Lupus: Intelligente Suche

Beitrag lesen

Ein Angreifer kann $key und $_POST[$key] frei bestimmen -
und ich sehe hier nirgendwo auch nur den Ansatz eines Hauchs
einer Kontrolle oder Escaping.

Ich habe hier alles möglichst eifach halten wollen. Aber für das Escapen habe ich eine eigene function geschrieben:

function input($var) {
    $var = addslashes(htmlentities(trim($var), ENT_QUOTES, 'UTF-8'));
    return $var;
}

[...]
$sql .= "(MATCH ".$key." AGAINST ('".input($_POST[$key])."' IN BOOLEAN MODE) OR ";
$sql .= $key." LIKE '%".input($_POST[$key])."%')";
[...]

$key kann man nur frei bestimmen, wenn man z.B Firebug hat.
Aber auch das Problem lässt sich lösen: mann kann z.B. alle Spalten
in einem Array Speichern und dann eine weitere Abfrage einbauen:

$spalten = array('tierart', 'gewicht', 'name', 'beschreibung',...);
foreach($_POST as $key => $value) {
    if(!in_array($key, $spalten) AND $key != 'search') {
        die('Bitte benutzen Sie die Aingabefelder aus dem Formular...');
    }
}

So sollten doch eigentlich alle Sicherheitslücken geschlossen ein,...
Hoffe ich zumindest...

Grüsse,
Lupus