Die Speicherung von PHP in der Datenbank ist an sich schon ein schlechter Entwurfsgeruch; auch wenn Sie in diesem Fall ziemlich sicher sind, dass sie niemals unsicheren Code enthalten kann, ist es immer gut, die Anzahl der Annahmen oder Abwehrmaßnahmen zu minimieren, die Sie treffen müssen. Wenn Sie PHP-Code in der Datenbank speichern, wird ein Angriff, bei dem sich ein Angreifer Zugang zu Ihrer Datenbank verschafft, schnell sehr viel ernster und wird zu einem Angriff, bei dem ein Angreifer beliebigen Code ausführen kann! Ich weiß, dass ein solcher Angriff auf Ihre Datenbank sehr unwahrscheinlich ist, aber dennoch ist es eine gute Sicherheitspraxis, Ihr System selbst in einer unwahrscheinlichen Situation nicht mehr als nötig zu gefährden.
Viele Menschen stimmen zu dass eval() in PHP-Code immer und ausnahmslos vermieden werden sollte. Es gibt immer eine Alternative.
In diesem Fall würde ich jedoch sagen, dass die Verwendung von eval() die beste Lösung für Sie wäre, da Sie bereits PHP-Code in der DB speichern, so dass die Verwendung von eval() Ihr Risiko nicht noch weiter erhöht.
Ich würde jedoch empfehlen, dass
- Sie versuchen, den Code zu überprüfen, bevor Sie ihn eval(), indem Sie konservativ in dem, was Sie erlauben. Nehmen Sie an, dass ein Angreifer irgendwie in Ihre Datenbank eingedrungen ist, auch wenn das unwahrscheinlich ist.
- Sie sollten zumindest ernsthaft darüber nachdenken, Ihre Anwendung so umzuschreiben, dass der PHP-Code nicht in einer Datenbank gespeichert wird. Wenn Sie komplexe Datenstrukturen speichern, sollten Sie stattdessen über etwas wie JSON oder sogar XML nachdenken. Hierfür gibt es sichere Parser.
Es tut mir leid, wenn diese Antwort ein wenig reaktionär erscheint; ich halte diese Art von Fragen einfach für sehr wichtig.
0 Stimmen
Entschuldigung für die Bearbeitung, aber ich bekomme solche Ide
0 Stimmen
S
0 Stimmen
T