Frage

Nehmen Sie diesen Code ein:

<?php
if (isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
}

if ($action) {
    echo $action;
}
else { 
    echo 'No variable';
}
?>

Und Zugriff auf die Datei dann mit? Action = test Gibt es eine Möglichkeit $ Aktion zu verhindern, dass automatisch von der GET erklärt werden? Anders als natürlich das Hinzufügen

&& !isset($_GET['action'])

Warum soll ich die Variable für mich erklärt werden?

War es hilfreich?

Lösung

Überprüfen Sie Ihre php.ini für die register_globals Einstellung. Es ist wahrscheinlich, wollen Sie es aus.

  

Warum soll ich die Variable für mich erklärt werden?

Sie nicht. Es ist eine schreckliche Sicherheitsrisiko. Es macht die Umwelt, GET, POST, Cookie und Server-Variablen global reservierte Variablen in PHP.

Andere Tipps

Sieht aus wie register_globals in der php.ini ist der Schuldige. Sie sollten diese ausschalten. Es ist auch ein großes Sicherheitsrisiko dar, es zu haben an.

Wenn Sie auf Shared-Hosting sind und können php.ini nicht ändern, können Sie ini_set () register_globals auszuschalten.

Stellen Sie register_globals aus, wenn ich Ihre Frage bin zu verstehen. Siehe http://us2.php.net/manual/en/language .variables.predefined.php

Wenn Sie keinen Zugriff auf die php.ini , ein ini_set('register_globals', false) im PHP-Skript wird nicht funktionieren (Variablen bereits deklariert) Ein .htacces s mit:

php_flag register_globals Off

kann manchmal helfen.

Sie können testen, ob alle Variablen durch Drehen des PHP-Log-Levels in der php.ini

ordnungsgemäß deklariert werden
error_reporting  =  E_ALL 

Ihr Code-Schnipsel jetzt sollte eine BEKANNTMACHUNG erzeugen.

An einem gewissen Punkt in der Geschichte der php machten sie die umstrittene Entscheidung register_globals standardmäßig zu deaktivieren, da es eine große Gefahr für die Sicherheit war. Es gibt das Potenzial jemand Variablen in Ihrem Code zu injizieren, undenkbar Folgen zu schaffen! Dieses "Feature" wird auch in php6 entfernt

Wenn Sie feststellen, dass es bei Kontakt ist der Administrator, um sie auszuschalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top