Beitragsrückblick für (die neuesten Beiträge zuerst) |
wakko0816 |
Erstellt: 20:11 am 22. Juni 2011 |
Doch interessehalber, was macht man denn sonst noch außer Strings escapen?
| "mysql_real_escape_string" ist schon mal ein guter Anfang, damit ist man dann zumindest für die MySQL Verbindung auf der sicheren Seite. Ob das Ding aber auch HTML oder Javascript zuverlässig entschärft ist aber eine andere Frage. Der Joomla-eigene DB-Layer macht vermutlich noch ein paar Sachen mehr, als einfach nur einzelne kritische Zeichen zu Escapen, deshalb sollte der die erste Wahl sein. |
GenialOmaT |
Erstellt: 11:10 am 22. Juni 2011 |
Ja diese API gibt es tatsächlich, nur hab ich erstmal den Weg gewählt, den ich am schnellsten umsetzen konnte.. Mal sehen wie ichs mache, werd wohl versuchen das über Joomla zu realisieren.. Doch interessehalber, was macht man denn sonst noch außer Strings escapen?
|
wakko0816 |
Erstellt: 21:12 am 21. Juni 2011 |
Joomla hat höchstwahrscheinlich nen DB-Abstraktions-Layer, der (hoffentlich) einigermassen sicher sein sollte. Schau mal in den Joomla-Code, ob Du da was findest. Vermutlich gibt es sogar ne interne Joomla-API, mit der man User anlegen kann. Also das sollte in jedem Fall die erstere Wahl sein, bevor man da am CMS vorbei in der DB rumwurschtelt. Strings escapen alleine ist in der Regel nicht ausreichend. Da sollte man schon mehr machen.
|
GenialOmaT |
Erstellt: 18:48 am 21. Juni 2011 |
Nabend allerseits! Habe mir mal ein kleines Script geschrieben, um bei Joomla automatisch einen Benutzer anzulegen, aufgerufen wird das Skript über ein Batch Skript.. Jetzt habe ich mal bei Wikipedia ein wenig über SQL Injection gelesen, was ja theoretisch möglich sein dürfte.. Bin mir aber nicht ganz sicher, wie ich das Skript am besten absichere, bei Wikipedia sind zwar Beispiele für PHP aber der Satz: "Ab PHP 5.1 sollten PHP Data Objects für Datenbankabfragen verwendet werden." macht mich ein wenig stutzig, heißt dass das ich den DB Zugriff grundsätzlich anders realisieren sollte als jetzt der Fall? Wäre cool, wenn mir jemand ein paar Tipps geben kann
Code<? $secret = "secret"; if($_GET["s"]!=$secret) { echo "<meta http-equiv='refresh' content='3;URL=http://www.domain.de'>"; exit; } ?> <? $name = $_GET["n"]; $user = $_GET["u"]; $pw = $_GET["p"]; $mail = $_GET["m"]; $salt = md5(mt_rand()); $crypt = md5($pw.$salt); $password = $crypt.':'.$salt; $verbindung = mysql_connect("localhost", "db" , "pw") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("db") or die ("Datenbank konnte nicht ausgewählt werden"); mysql_query("INSERT INTO jos_users( name, username, password, email, usertype, gid ) VALUES( '$name', '$user', '$password', '$mail', 'Registered', 18 )"); mysql_query("INSERT INTO jos_core_acl_aro( section_value, value ) VALUES ( 'users', LAST_INSERT_ID() )"); mysql_query("INSERT INTO jos_core_acl_groups_aro_map( group_id, aro_id ) VALUES ( 18, LAST_INSERT_ID() )"); echo "Benutzer angelegt" ?> | Edit: Folgendes habe ich jetzt angepasst:
Codemysql_query("INSERT INTO jos_users( name, username, password, email, usertype, gid ) VALUES( 'mysql_real_escape_string($name)', 'mysql_real_escape_string($user)', 'mysql_real_escape_string($password)', 'mysql_real_escape_string($mail)', 'Registered', 18 )"); | Reicht das schon? (Geändert von GenialOmaT um 19:05 am Juni 21, 2011)
|
× |