Arbeite mit magischen Zitaten herum oder stelle sicher, dass sie ausgeschaltet sind?

7

Ist es Wert, meinen Code zu ändern, um "portabler" zu sein und mit dem Horror von magischen Zitaten umgehen zu können, oder sollte ich einfach sicherstellen, dass es immer über eine .htaccess-Datei ausgeschaltet ist?

%Vor%

Versus

%Vor%     
nickf 16.12.2008, 01:57
quelle

4 Antworten

14

Passen Sie nicht beide Situationen an. Zwei Codepfade = doppelt so viele Kopfschmerzen, außerdem besteht eine gute Chance, dass du dich verplappern und vergessen wirst, mit beiden Situationen umzugehen.

Ich habe überprüft, ob magische Anführungszeichen ein- oder ausgeschaltet sind, und wenn sie aktiviert waren, mache ich ihre Magie rückgängig (wie andere im Thread vorgeschlagen haben). Das Problem dabei ist, dass Sie die konfigurierte Umgebung (egal wie dumm) ändern, die ein anderer Programmierer erwarten könnte.

Heutzutage schreibe ich Code, als ob magische Anführungszeichen ausgeschaltet sind, und in meiner Hauptdatei / bootstrap / always-runs überprüfe ich, ob magische Anführungszeichen ein- oder ausgeschaltet sind. Wenn sie eingeschaltet sind, erstelle ich eine Exception, die erklärt, warum dies eine schlechte Sache ist , und gebe Anweisungen, wie sie ausgeschaltet werden können.

Dieser Ansatz ermöglicht es Ihnen, zu einem einzigen Verhalten zu codieren, ermutigt andere Leute, Ihren Code zu verwenden, um ihre Server korrekt zu konfigurieren (magische Anführungsstriche verschwinden in PHP 6), und wenn jemand wirklich magische Anführungszeichen benötigt Sie können Ihre Ausnahme behandeln und ihr Leben selbst in die Hand nehmen.

    
Alan Storm 16.12.2008, 02:53
quelle
4

Ich würde die Einstellung mit get_magic_quotes_gpc() überprüfen und einen großen verrauschten Ausgang mit Fehler machen. Informieren Sie den Administrator in dem Fehler über die richtige Einstellung.

    
Zan Lynx 16.12.2008 02:48
quelle
2

Ich würde sicherstellen, dass es ausgeschaltet ist, wenn das möglich ist (erfordert Zugriff auf .htaccess oder Apache-Konfiguration). Es ist besser, es vollständig zu vermeiden, als das Verhalten zu entfernen, das mehr Ressourcen benötigt und anfällig für Fehler ist.

Wenn das Deaktivieren nicht möglich ist, könnte Ihr Beispielcode für die Eingabe-Superglobale nützlich sein ($ _GET, $ _ POST, ...). Achten Sie jedoch darauf, dass er nicht auf Daten angewendet wird, die von anderen Quellen als diesen Superglobalen kommen. Solcher Missbrauch ist ziemlich häufig .

Stellen Sie nur sicher, dass Sie beim Deaktivieren von magic_quotes_gpc () einen geeigneten Escaping-Mechanismus verwenden, um Sie vor SQL-Inkection zu schützen (z. B. mysql_real_escape_string () oder vorbereitete PDO-Anweisungen). Sie können mehr über SQL Injection Prevention lesen - hier .

    
Eran Galperin 16.12.2008 02:03
quelle
1

Bei einer Seitennotiz werden sie von php 6 nicht mehr unterstützt. Das Schreiben des Codes für sie kann in der Zukunft von Vorteil sein.

    
corymathews 16.12.2008 02:56
quelle

Tags und Links