1
Bei meiner Beschäftigung mit SQL in letzter Zeit bin ich auf einen relativ alten Trick gestoßen, um die Sicherheit von Programmen zu erhöhen. Dazu speichert man sämtliche für das Programm benötigten Queries als Stored Procedures in der Datenbank. Das PHP-Programm bekommt als einziges Recht EXECUTE PROCEDURE und alle anderen Rechte werden im entzogen. Sogar falls die Netzseite mit dem PHP-Programm gehackt wird und das PHP-Programm umgeschrieben, lassen sich auf der Datenbank trotzdem nur die vorgesehenen Queries ausführen.
Ein bißchen suspekt ist mir nur, daß eine Datenbank genau so leicht oder schwer zu knacken sein dürfte wie der Rest einer Netzseite. Wenn ein Webhoster viele sicherheitskritische Funktionen anbietet, dann kann ein Angriff darauf vielleicht schon viel mehr Schaden anrichten als auf die Datenbank. Schon der Mißbrauch von mailto() könnte dafür sorgen, daß man vom Hoster rausgekickt wird und dann wäre man auch von seiner Datenbank getrennt. Darum frage ich mich gerade, ob sich der Wechsel zu Stored Procedures lohnt. Wo es nur um Queries geht, bleiben die sowieso gleich. Transaktionen erfordern weniger Kommunikation zwischen PHP-Parser und MySQL, wenn die sich in einer Stored Procedure befinden. Falls man die Wahl zwischen Stored Procedure oder dem gleichen Programmteil als PHP hat, dann soll PHP bei der Verarbeitung von Zeichenketten und mathematischen Funktionen schneller sein, sonst nicht. Die Geschwindigkeit wäre schon der einzige Vorteil.
Ich überlege außerdem so Sachen wie CSS statt in eine Datei in die Datenbank zu verlegen. Da könnten dann, falls erforderlich oder sinnvoll, ein paar Fallunterscheidungen noch per Stored Procedure getroffen werden und dann der CSS-Teil an das PHP-Skript ausgeliefert werden. Der Grund für die Verlegung wäre natürlich nur der, daß Datenbanken angeblich schneller gelesen werden können als Dateien. Dazu muß ich aber noch anmerken, daß das meiner bisherigen Erfahrung nicht entspricht. Bei einer Netzseite mit mehreren parallel zugreifenden Besuchern kann sich das natürlich schnell ändern.
Ranma
Ein bißchen suspekt ist mir nur, daß eine Datenbank genau so leicht oder schwer zu knacken sein dürfte wie der Rest einer Netzseite. Wenn ein Webhoster viele sicherheitskritische Funktionen anbietet, dann kann ein Angriff darauf vielleicht schon viel mehr Schaden anrichten als auf die Datenbank. Schon der Mißbrauch von mailto() könnte dafür sorgen, daß man vom Hoster rausgekickt wird und dann wäre man auch von seiner Datenbank getrennt. Darum frage ich mich gerade, ob sich der Wechsel zu Stored Procedures lohnt. Wo es nur um Queries geht, bleiben die sowieso gleich. Transaktionen erfordern weniger Kommunikation zwischen PHP-Parser und MySQL, wenn die sich in einer Stored Procedure befinden. Falls man die Wahl zwischen Stored Procedure oder dem gleichen Programmteil als PHP hat, dann soll PHP bei der Verarbeitung von Zeichenketten und mathematischen Funktionen schneller sein, sonst nicht. Die Geschwindigkeit wäre schon der einzige Vorteil.
Ich überlege außerdem so Sachen wie CSS statt in eine Datei in die Datenbank zu verlegen. Da könnten dann, falls erforderlich oder sinnvoll, ein paar Fallunterscheidungen noch per Stored Procedure getroffen werden und dann der CSS-Teil an das PHP-Skript ausgeliefert werden. Der Grund für die Verlegung wäre natürlich nur der, daß Datenbanken angeblich schneller gelesen werden können als Dateien. Dazu muß ich aber noch anmerken, daß das meiner bisherigen Erfahrung nicht entspricht. Bei einer Netzseite mit mehreren parallel zugreifenden Besuchern kann sich das natürlich schnell ändern.
Ranma