[PHP/MySQL] Gibt es sowas immer noch?!

dev

Registered User
An sich denkt man ja, dass diese Lehrbuchbeispiele für Antipatterns nicht in der realen Welt existieren, schon gar nicht mehr im Jahr 2012. Naja, weit gefehlt, ich übernehme gerade ein Projekt und finde das beim lokalen Einrichten:

Code:
$user = $_POST['user'];
$pass = $_POST['pass'];
	
$select = "select * from login where USER = '$user'";
$result = mysql_query($select);

Geschockt,

dev
 
Ja, sowas trifft man heute leider immer noch.

Ich habe auch von einer Agentur mal entsprechenden Quelltext vorgesetzt bekommen - auf Nachfrage hieß es:
- "es gibt keinen allgemeinen Standard dafür, was 'aktuelle Sicherheitsanforderungen' für Webprojekte sind"
- Die Seite ist ja nicht für eine Bank
- Es wurde vorher nicht definiert, daß beim Programmiern auf entsprechende (ja eh nicht existierende) Standards geachtet werden soll
- Für den Anwender ist das System eine Blackbox - er würde die von mir aufgezeigten Lücken also gar nicht erkennen können.

Ich war ehrlich gesagt damals mehr als sprachlos...
 
Sowas gehört ja meiner Meinung nach nicht zu "zu definierenden Standards" - das sind absolute Basics. Ein Auto kauft man ja auch nicht ohne Radmuttern.

Wenn eine Agentur/Dienstleister so in Serie arbeitet/arbeiten, müsste denen/dem früher oder später der ganze Schei** um die Ohren fliegen.
 
Wahnsinn! Mir gehts aber ähnlich, sehe immer wieder wie Queries unescaped ausgeführt werden, XSS/LFI/RFI? Standard! Wenn dann $system übernommen wird oder CCs im Internet kursieren (Bsp. Mindfactory) ist das Geheule groß.
 
Ja, eben mal schnell was mit PHP gefingert und gut. Gruselig.

Genau das ist ja die gängige Kritik an PHP. Irgendwas gebastelt ist schnell, gut gebastelt dagegen schwer. Das Zeugs reagiert halt immer in die unsichere Richtung.

Im Gegensatz dazu muss man sich z.B. bei Rails echt Mühe geben, Mist zu bauen. Dafür ist halt auch die Lernkurve steiler.
 
naja, solchen Bockmist (keine Validierung der Eingabedaten, ...) kann man in jede Sprache verzapfen - vor solcher Ignoranz informationsgesellschaftlicher Gefpflogenheiten schützt einen keine Sprache.
 
Jo, in Rails sieht das dann so aus:

Code:
Login.where("user = '#{params[:user]}'")

anstelle von z. B.
Code:
Login.where('user = ?', params[:user])

Allerdings programmiert man mit Ruby/$webframework generell anders, da man viel mehr an Konventionen & best practices gebunden ist/wird, zumindest geht es mir so.
 
Genau das ist ja die gängige Kritik an PHP. Irgendwas gebastelt ist schnell, gut gebastelt dagegen schwer. Das Zeugs reagiert halt immer in die unsichere Richtung.

Naja, wer sich ernsthaft mit dem Thema Sicherheit auseinandersetzt, weiß was er tut. Das es Hobbyfrickler nicht wissen… Gibt's in jeder Sprache.
 
Natürlich kann man in jeder Sprache Mist bauen und wird das auch, wenn man nicht auf Sicherheit achtet. Der Unterschied ist aber, dass man, wenn man sich z.B. in Rails an den Standardweg hält, alles soweit sauber ist und man bewusst abweichen muss, um Lücken zu bauen. Siehe das Beispiel von dev: In dem Fall weiß ich, dass ich hier Plain-SQL ablade, weil ich das extra so will.

Bei PHP ist da einfach nix. Entweder baut man mit viel Ahnung was selbst. oder man fällt halt einfach hart in jede denkbare Lücke. Oder wer von euch baut Schutz vor CSRF in seine PHP-Formulare?
 
Der Vergleich zwischen PHP und Rails hinkt aber. Rails ist ein Framework auf Basis von Ruby und PHP ist eine Script-Sprache. Für PHP gibt es aber auch mehrere Frameworks - und dann sieht die Sache schon wieder anders aus.
 
Back
Top