WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 11.12.2006, 23:05   #11
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

Sicherer wäre z.B., die neue mysqli Erweiterung zu verwenden.

Also anstatt
PHP-Code:
$select_inhalt "SELECT Inhalt, Autor, Datum, Titel FROM news WHERE id = ".$upid
lieber
PHP-Code:
$query $mysqli->prepare"SELECT Inhalt, Autor, Datum, Titel FROM news WHERE id = ?" );
$query->bind_param'i',  $upid ); // i für integer
$query->execute( ); 
Ist zwar lästig, dafür ist man auf der sicheren Seite. Es gibt auch noch ein paar andere Möglichkeiten, um SQL-Injections zu vermeiden, aber Parameter zu verwenden ist (bei anderen Sprachen zumindest) denke ich die gängigste Methode.

Artikel

Nettes Youtube Video eines Live-"hacks":

SQL-Injection
delphirocks ist offline   Mit Zitat antworten
Alt 11.12.2006, 23:27   #12
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

aaaaaaaalles klar =)
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 11.12.2006, 23:32   #13
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

Zitat:
Original geschrieben von delphirocks
Nettes Youtube Video eines Live-"hacks":

SQL-Injection
hmmm, aber um JS zu deaktivieren brauche ich nicht mehr den quellcode editieren *lol*
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 12.12.2006, 11:42   #14
Blauer Kuckuck
Veteran
 
Registriert seit: 21.02.2006
Beiträge: 321


Standard

Hi,

vielen Dank erstmal für eure Vorschläge

ich hab alles ausprobiert-

Der Quelltext sieht momentan so aus:

PHP-Code:
<?php
  
  
include "config.php";
  
  
  
$autor $_POST["autor"];
  
$inhalt $_POST["inhalt"];
  
$titel $_POST["titel"];
  
$upid $_POST["upid"];
  
  @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die (mysql_error());
  
mysql_select_db(MYSQL_DATABASE) OR die (mysql_error());
  

  
  
  
$result mysql_query("
              UPDATE
                news
              SET
                Autor = 'addslashes($autor).',
                Datum = NOW(),
                Inhalt = '.addslashes($titel).',
                Titel = '.addslashes($titel).'
              WHERE
                ID = '.intval($upid).' LIMIT 1"
);
  
  
                  
  If (!
$result) {
      die(
mysql_error());
  } else {
      echo 
"Done.";
  }
  
?>
Beim Aufruf der Datei (Ich versuche, einen Newseintrag zu ändern), kommt keine Fehlermeldung mehr, sondern die selbst einprogrammierte Meldung "Done."

Leider ist der Eintrag nicht verändert worden.

Kann jemand den Fehler entdecken?

thx im Voraus,

Kuckuck
Blauer Kuckuck ist offline   Mit Zitat antworten
Alt 12.12.2006, 11:42   #15
Blauer Kuckuck
Veteran
 
Registriert seit: 21.02.2006
Beiträge: 321


Standard

Hi,

vielen Dank erstmal für eure Vorschläge

ich hab alles ausprobiert-

Der Quelltext sieht momentan so aus:

PHP-Code:
<?php
  
  
include "config.php";
  
  
  
$autor $_POST["autor"];
  
$inhalt $_POST["inhalt"];
  
$titel $_POST["titel"];
  
$upid $_POST["upid"];
  
  @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die (mysql_error());
  
mysql_select_db(MYSQL_DATABASE) OR die (mysql_error());
  

  
  
  
$result mysql_query("
              UPDATE
                news
              SET
                Autor = 'addslashes($autor).',
                Datum = NOW(),
                Inhalt = '.addslashes($titel).',
                Titel = '.addslashes($titel).'
              WHERE
                ID = '.intval($upid).' LIMIT 1"
);
  
  
                  
  If (!
$result) {
      die(
mysql_error());
  } else {
      echo 
"Done.";
  }
  
?>
Beim Aufruf der Datei (Ich versuche, einen Newseintrag zu ändern), kommt keine Fehlermeldung mehr, sondern die selbst einprogrammierte Meldung "Done."

Leider ist der Eintrag nicht verändert worden.

Kann jemand den Fehler entdecken?

thx im Voraus,

Kuckuck
Blauer Kuckuck ist offline   Mit Zitat antworten
Alt 12.12.2006, 11:47   #16
Philipp
verXENt
 
Benutzerbild von Philipp
 
Registriert seit: 01.08.1999
Beiträge: 7.084

Mein Computer

Standard

So wird das nicht funktionieren:

PHP-Code:
$result mysql_query(
              UPDATE 
                news 
              SET 
                Autor = 'addslashes($autor).', 
                Datum = NOW(), 
                Inhalt = '.addslashes($titel).', 
                Titel = '.addslashes($titel).' 
              WHERE 
                ID = '.intval($upid).' LIMIT 1"
); 
Das ganze sollte eher so aussehen:

PHP-Code:
$result mysql_query(
              UPDATE 
                news 
              SET 
                Autor = '"
.addslashes($autor)."', 
                Datum = NOW(), 
                Inhalt = '"
.addslashes($inhalt)."', 
                Titel = '"
.addslashes($titel)."' 
              WHERE 
                ID = '"
.intval($upid)."' LIMIT 1"); 
Philipp ist offline   Mit Zitat antworten
Alt 12.12.2006, 11:56   #17
Blauer Kuckuck
Veteran
 
Registriert seit: 21.02.2006
Beiträge: 321


Standard

Hi,

@Philipp:

Danke für deine Mühe...

Also,

mit meinem Code hats doch funktioniert.


Zitat:
Datei update.php
PHP-Code:
          echo "
                <html><head><title>News ändern</title></head><body><form action=\"updater.php\" method=\"POST\">
                <input disabled name=\"upid\" type=\"text\" size=\"5\" value=\""
.$upid."\">

                <input name=\"autor\" type=\"text\" size=\"20\" value=\""
.$row['Autor']."\">

                <input name=\"titel\" type=\"text\" size=\"20\" value=\""
.$row['Titel']."\">

                <textarea name=\"inhalt\" cols=\"40\" rows=\"20\">"
.$row['Inhalt']."</textarea>


                <input type=\"submit\" value=\"OK\">
                </form></body></html>"

Da habe ich das disabled weggelassen. Anscheinend wurde das nicht mit dem restlichen Formular zu "updater.php" weggeschickt.

Rausbekommen hab ichs, indem ich ganz oben error_reporting auf E_ALL gestellt habe, und prompt kam die Ausgabe "Undefinied Index" ...

THX trotzdem...

Kuckuck
Blauer Kuckuck ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:35 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag