» Willkommen auf Software «

GenialOmaT
aus Pößneck
offline



OC God
21 Jahre dabei !

AMD Phenom II
3200 MHz @ 3700 MHz mit 1.35 Volt


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:

Code
mysql_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)


Fahren Sie mich irgendwohin, ich werde überall gebraucht.

Beiträge gesamt: 2091 | Durchschnitt: 0 Postings pro Tag
Registrierung: März 2003 | Dabei seit: 7699 Tagen | Erstellt: 18:48 am 21. Juni 2011
wakko0816
offline



OC God
19 Jahre dabei !

Intel Core i5
3500 MHz @ 4200 MHz
55°C mit 1.18 Volt


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.

Beiträge gesamt: 1146 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2004 | Dabei seit: 7177 Tagen | Erstellt: 21:12 am 21. Juni 2011
GenialOmaT
aus Pößneck
offline



OC God
21 Jahre dabei !

AMD Phenom II
3200 MHz @ 3700 MHz mit 1.35 Volt


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?


Fahren Sie mich irgendwohin, ich werde überall gebraucht.

Beiträge gesamt: 2091 | Durchschnitt: 0 Postings pro Tag
Registrierung: März 2003 | Dabei seit: 7699 Tagen | Erstellt: 11:10 am 22. Juni 2011
wakko0816
offline



OC God
19 Jahre dabei !

Intel Core i5
3500 MHz @ 4200 MHz
55°C mit 1.18 Volt



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.

Beiträge gesamt: 1146 | Durchschnitt: 0 Postings pro Tag
Registrierung: Aug. 2004 | Dabei seit: 7177 Tagen | Erstellt: 20:11 am 22. Juni 2011