• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Thema "Sicherheit"

P

Prasedonym

Guest
Also ich kann alle Clientseitige Sprachen
hab mit 10 angefangen zu programmieren und bin jetzt 12

kann:
PHP
MySql
HTML
CSS
und ein bischen Javascript

Nun mein Problem ist die Sicherheit!
was muss man am meissten beachten bei der Sicherheit?

bedanke mich bei jeder Antwort :mrgreen:
 
Also grundsätzlich: Alle Benutzereingaben sind böse! Jeder Art von Benutzereingaben sollten abgesichert werden.
Für SQL benutze ich gerne mysqli im mit Prepare:
http://www.html.de/php/28114-fragen-zu-mysql-injections.html
Da hab ich es im ersten Post so ein wenig geschildert. Die Maskierung erfolgt vom Treiber aus, darum auch keine ' um die Fragezeichen.

Der Umsteg von mysql zu mysqli ist nicht schwer. Ich empfehle: phpBuddy.eu - Tutorial - MySQLi Erweiterung von PHP 5 als kleine Lektüre.

Neben den SQL Injections gibt es auch Sicherheitslücken z.b. echo $_POST['test']. Wenn ich nun in der POST?test=<?php exec("format C: /y"); ?> senden würde, würde es ungehindert benutzt werden. Hier empfiehlt sich der Einsatz von htmlspecialchars z.b..

Behalte immer im Kopf: Alle Benutzereingaben sind böse!

Mfg
 
Mann...
eine einführliche Beschreibung zu Sicherheit thx.

werde den Spruch merken!

Neben den SQL Injections gibt es auch Sicherheitslücken z.b. echo $_POST['test']. Wenn ich nun in der POST?test=<?php exec("format C: /y"); ?> senden würde, würde es ungehindert benutzt werden. Hier empfiehlt sich der Einsatz von htmlspecialchars z.b..
Alos du meinst wenn ich z.b ein Input Feld habe kann man z.b einen MySql Befehl reinschreiben
HTML:
delete":
$sql = "DELETE ".             
 "FROM ". 
 "benutzerdaten ";

und dann wird dies ausgeführt?

 
jane. Du kannst du ja mal die Beispiele bei wikipedia ansehen: SQL-Injection – Wikipedia

Ich mach auch mal ein Beispiel: LoginScript:
LoginCheck.php:
PHP:
...
mysql_query("SELECT * FROM `users` WHERE `name`='$_POST['name']' AND `passwort`=PASSWORD('$_POST['passwort']')");
...
Wenn ich nun bei dem Login als Benutzername ' or 1=1 -- eingeben würde, dann würde der Befehl so aussehen:
Code:
SELECT * FROM `users` WHERE `name`='' or 1=1 -- (alles hinter -- ist ein Kommentar in SQL)
Damit währe ich, laut dem LoginCheck.php, eingelogt und könnte meine Untaten treiben.
(Dieses Beispiel kommt aus einem Bekannten Fall in den USA, bei den man sich mit genau diesem Schema in vertrauliche Krankenakten einloggen konnte)

Darum: Benutzereingaben === böse!

Richtig währe es z.b. wie ich es in mysqli machen würde:
PHP:
...
$logincheck = $db->prepare("SELECT * FROM `users` WHERE `name`=? AND `passwort`=PASSWORD(?)");
$logincheck->bind_param('ss', $_POST['name'], $_POST['passwort']);
...
Oder halt in mysql mit z.b. PHP: mysql_real_escape_string - Manual etc... direkte $_POST/GET echo's vermeiden etc...

Mfg
 
Zurück
Oben