AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Formulardaten mit IdHTTP.Post senden

Formulardaten mit IdHTTP.Post senden

Ein Thema von Luckie · begonnen am 20. Feb 2010 · letzter Beitrag vom 20. Feb 2010
Antwort Antwort
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Formulardaten mit IdHTTP.Post senden

  Alt 20. Feb 2010, 03:43
Ziel Script login.php:
Code:
<php
   $username = htmlspecialchars($_POST['username']);

   if (isset($username)){
      echo "Hallo $username. Wie geht es dir?";
   }
   else{
      echo "Variable nicht gesetzt";
   }
?>
Zugehöriger Delphi Code:

Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
var
  data: TStringList;
  s: String;
begin
  data := TStringList.Create;
  try
    data.Values['username'] := 'Erwin';
    try
      s := IdHTTP1.Post('http://www.michael-puff.de/login.php', data);
      ShowMessage(s);
    except
      on E: Exception do
        ShowMessage('Fehler: ' + E.Message);
    end;
  finally
    data.Free;
  end;
end;
Schlagworte: Indy, HTTP, Post, Formular, Formular ausfüllen

@Code Lib Manager: Wenn wir so was schon haben, kickt es in die Tonne.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: Formulardaten mit IdHTTP.Post senden

  Alt 20. Feb 2010, 11:25


XSS!!

Edit:// Okay, ich will den Post so leer nicht stehen lassen. Auch wenn der PHP-Code offensichtlich nur ein Beispiel ist, so bitte ich doch darum, dort keine Sicherheitslücken einzubauen. Das Ausgaben der Variable $_POST['username'] kann in einer XSS-Attacke enden, die im schlimmsten Falle zur Kompromittierung eines Benutzeraccounts der entsprechenden Seite führen kann. Also bitte ein htmlspecialchars() um die Variable in Zeile 5!

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Formulardaten mit IdHTTP.Post senden

  Alt 20. Feb 2010, 13:00
Richtig, um den PHP Code ging es mir nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: Formulardaten mit IdHTTP.Post senden

  Alt 20. Feb 2010, 15:04
Okay, ihr dürft mich schlagen wenn ihr wollt, aber ich muss nochmal am eigentlich nur beispielhaften PHP-Code meckern.

Die Variable $username ist immer gesetzt. Schließlich definierst du sie in Zeile 2 ja unabhängig vom Inhalt der _POST-Variable. Daher schlage ich einfach folgenden Code - mit fehlendem Fragezeichen im PHP-Tage - vor.

Code:
<?php

    if ($_POST['username']) {
        $username = htmlspecialchars($_POST['username']);
        echo "Hallo $username. Wie geht es dir?";
    } else {
        echo "Variable nicht gesetzt";
    }
Ich hoffe ich bin nicht der einzige, der der Meinung ist, dass auch
rhetorischer Beispielcode seine Richtigkeit haben darf...

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Formulardaten mit IdHTTP.Post senden

  Alt 20. Feb 2010, 15:16
Das Ganze wird später eh bereinigt, daher frage ich auch ganz kurz was dazu:

Ist "if ($_POST['username'])" sauber? Ich nutze immer "if (isset($_POST['username']))".
Wäre $_POST['username'] = 0 (die Zahl Null), würde dein Beispiel Valle, nicht funktionieren, da die if-Abfrage "false" wird.

Das Beispiel selbst finde ich für die CL gut geeignet. Aber ich stimme Valle zu, dass der Code sicher sein sollte. Nicht, dass es jemand falsch nachbaut.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: Formulardaten mit IdHTTP.Post senden

  Alt 20. Feb 2010, 16:25
Zitat von Matze:
Ist "if ($_POST['username'])" sauber?
Mh nein, natürlich nicht.

Ich habe den Code selbst geschrieben statt ihn von Luckie zu kopieren und dabei das isset vergessen. Zum Prüfen ob es gesetzt ist, ist isset() oder array_key_exists() geeignet. Oft ist strlen(trim(...)) > 0 aber sinnvoller, um auf eine nicht-leere Formulareingabe zu prüfen. In diesem Fall ist das aber egal.

Zitat von Matze:
Aber ich stimme Valle zu, dass der Code sicher sein sollte. Nicht, dass es jemand falsch nachbaut.


Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf