Datenbankbefehl nach Linkklick

Ach jetzt hab ich es verstanden.
Naja, seit wann übergibt man eine Session-ID per POST? Kann man doch jederzeit faken.
per Cookie auch.

Und wie ist es mit mysql_real_escape_string() und Magic Quotes?
Willst du dich eher darauf verlassen, dass es aktiviert ist? :roll:
Magic Quotes gehören eh der Vergangenheit an und sind auch in vielen Konfigurationen ausgeschaltet. Notfalls kann man ja sowas an den Anfang des Scripts packen:
PHP:
if(get_magic_quotes_gpc())
{
   foreach($_POST as $key => $value)
   {
       $_POST[$key] = stripslashes($value);
   }
}
 
Naja, seit wann übergibt man eine Session-ID per POST?
Wie willst du sie sonst übergeben?
Kann man doch jederzeit faken.
Und per GET oder COOKIE geht das ned? ;) - Alles vom Client kann manipuliert werden. Drum musst du als Webmaster ja auch alles gut prüfen, was am Server ankommt.
Und wie ist es mit mysql_real_escape_string() und Magic Quotes?
Magic Quotes kannstde vergessen. Mit PHP6 sind die eh Geschichte 8)
Hab schon oft Loseseiten gesehen, die dann etliche Backslashes hatten, weil die alle möglichen Maskierungen nutzen.
Wer keine Ahnung von Programmierung hat, sollte ja auch besser keine Seite betreiben ;) - "addslashes(), dann is die Eingabe sicher", so wirds dann in die Datenbank geschrieben; nachdem Auslesen kommen nochmal Slashes drauf und am Ende hast dann
\\\"Herzlich Willkommen beim \\\\-Verein\\\"
:ugly:


Wenn du den String
Code:
\Ha"llo'
kriegst, hängst du einmal Slashes dran, damit in der Datenbank nix schief geht. Ein Hochkomma wie im Beispiel kann eine SQL-Injection sein, also in der Query geht das mit mysql_real_escape_string() rein, z.B.
Code:
UPDATE foo SET bar = '\\Ha\"llo\''
rein.
Liest du es wieder aus, kriegst du von der DB ja wieder
Code:
\Ha"llo'
Beim Anzeigen können jetzt HTML-Zeichen gefährlich werden, die das Markup schrotten. Hier mit htmlentities() die Anführungszeichen in Entitäten umwandeln, z.B.
HTML:
<img src="foo.png" alt="\Ha"llo'" />
Doppelt und vierfache Slashes, wie man sie auf primitiven Webseiten oder eMails sieht, kommen nur davon her, dass der Programmierer nicht wusste, was er tat ...oder das Magic Quotes an waren :evil:
 
Zuletzt bearbeitet:
theHacker schrieb:
Wie willst du sie sonst übergeben?Und per GET oder COOKIE geht das ned? ;) - Alles vom Client kann manipuliert werden. Drum musst du als Webmaster ja auch alles gut prüfen, was am Server ankommt.

Wenn ich jetzt einen Thread auf Klamm erstelle, dann wird doch nicht meine UserId per POST übergeben.


"addslashes(), dann is die Eingabe sicher", so wirds dann in die Datenbank geschrieben; nachdem Auslesen kommen nochmal Slashes drauf und am Ende hast dann:ugly:

Wozu noch addslashes()? Reichen mysql_real_escape_string() nicht?
Oder war das ein Beispiel dafür, wie man das nicht machen sollte?
 
Wenn ich jetzt einen Thread auf Klamm erstelle, dann wird doch nicht meine UserId per POST übergeben.
Dann deaktivier doch mal deine Kekse und staune drüber, wieso in jedem Formular hier im Forum der sonst leere Parameter s plötzlich Sinn ergibt ;)
 
Mir ist schon klar, dass eine Session auf Cookies aufbaut.
Aber es wird keine ID direkt als POST-Daten übergeben.
 
Aber es wird keine ID direkt als POST-Daten übergeben.
Doch. Eben, wenn keine Kekse zur Verfügung stehen. Zumindest das vB unterstützt das noch.

(In der heutigen Zeit gehen viele Seiten davon aus, dass jeder Kekse unterstützt, drum findet man auf vielen Seiten diesen Fallback-Mechanismus gar nicht mehr)
 
Doch. Eben, wenn keine Kekse zur Verfügung stehen. Zumindest das vB unterstützt das noch.

(In der heutigen Zeit gehen viele Seiten davon aus, dass jeder Kekse unterstützt, drum findet man auf vielen Seiten diesen Fallback-Mechanismus gar nicht mehr)

Wenn ich mich recht entsinne, ist dies eine Einstellung in der php.ini, ob und wie die Session-ID übergeben wird. Aufgrund der Serverlast betreiben viele Provider PHP-Session nur noch per Cookie und unterbinden das nachträgliche, automatische Einfügen von entsprechenden Feldern in Formularen und Querry-Strings.

Viele Grüße aus Berlin

leller
 
Hi,

danke für die vielen Antworten.
Also habe alles probiert, leider ohne Erfolg.
Es geht um die Seite: www.DugOutForce.de

Evlt. einloggen und bei "Webseiten bearbeiten" möchte ich gerne, dass man jede Seite einzeln löschen kann. ^^

Gruß
Julian
 
1. https://if-schleife.de/

2. wirft dein Code eine Notice, wenn gar kein GET-Parameter sid übergeben wurde. Also immer isset(), array_key_exists() oder empty() verwenden ;)

1. Joa, danke dir - du bist der vierte, der mich darauf hinweist. :p
2. Nicht, wenn du deinen Server ordentlich konfigurierst. Notice-Ausgaben haben auf einem live-System nichts zu suchen - was nicht heißen soll, dass man es nicht besser machen kann (!):

PHP:
if(!empty($_GET["sid"]))