Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP Prüfung, ob ein submit Button betätigt wurde

Frage Entwicklung PHP

Mitglied: gechger

gechger (Level 1) - Jetzt verbinden

17.08.2009, aktualisiert 21:52 Uhr, 14097 Aufrufe, 11 Kommentare

Könnt Ihr mir bei einem Verständnis Problem helfen?

Hallo Forum,

In einem Eingabeformular übergebe ich eingegebene Daten an ein weiteres Formular, dann noch einmal an ein anderes Formular. Je nachdem, welcher Submit Button gedrückt wurde, soll über eine IF-Abfrage gesteuert werden, was der Benutzer sieht.

In meinen ersten Versuchen habe ich das über eine solche Abfrage gemacht:

if (isset($_REQUEST=['name des submit Buttons']))}
.....


aber habe nun gelesen, daß der $_REQUEST unsicher ist.
Wie könnte man das anders lösen? Macht der $_POST das Gleiche?
Gibts vielleicht einen komplett anderen Ansatz?

Ziel ist folgendes:
- Eingabeformular
- Submit
- Abfrage aus MySQL Datenbank
- neues Eingabeformular zur Auswahl der im Array stehenden Daten
- Submit
- Ausgabe des selektierten Datensatzes
- Änderung des selektierten Datensatzes
- Submit
- Änderung durchführen in der Mysql Datenbank

Vielen Dank für jede Idee.

Schöne Grüße
Christof
Mitglied: nxclass
17.08.2009 um 22:35 Uhr
$_REQUEST beinhaltet die Daten aus $_POST und $_GET - wenn Du das Formular per method="post" abschickst kannst Du natürlich auch $_POST benutzen.

Ich kann allerdings nicht verstehen was 'unsicher' (unsicherer) sein soll an $_REQUEST - POST Daten kann man genauso manipulieren wie GET Daten.

Mann könnte in dem Formular ein type="hidden" input Feld einfügen welche die auszuführende Action enthält - bzw. diese direkt in der URL angeben. In PHP könnte man nun diese 'action' auswerten und eine Funktion aufrufen. - Die meisten Frameworks arbeiten auf diese weise.
Bitte warten ..
Mitglied: godlie
17.08.2009 um 22:48 Uhr
Hallo,

ob ich nun ein Formular per POST abschicke und dann den Submit Button checke oder einen input type=hidden
is ja untern Strich das gleiche.
Beides ist mit geringen Kenntnissen manipulierbar.
Eine Sichere Übertragung glaub ich geht eh nur über ssl wobei ich mir hier auch nicht sicher bin ob ich diese nicht auch manipulativ sind...
Bitte warten ..
Mitglied: Cubic83
17.08.2009 um 22:55 Uhr
Zitat von godlie:
Hallo,

Eine Sichere Übertragung glaub ich geht eh nur über ssl
wobei ich mir hier auch nicht sicher bin ob ich diese nicht auch
manipulativ sind...

Blödsinn. SSL sichert nur die Verbindung zwischen Server und Client und ändert absolut gar nichts an der Problematik!!!! Was hin und her transportiert wird kann nach wie vor manipuliert werden!
Bitte warten ..
Mitglied: dog
17.08.2009 um 23:11 Uhr
Ich kann allerdings nicht verstehen was 'unsicher' (unsicherer) sein soll

Ganz einfach: REQUEST ist eine Sammelbox für POST,GET,SERVER,ENV...

Und damit könnte auch folgender Code in irgendeinem Forum eine if(isset($_REQUEST['account_loeschen']) Abfrage triggern:

<img src="http://meinebank.de/action.php?account_loeschen=1" />
Natürlich löst POST das eigentliche Sicherheitsproblem hier nicht wirklich sondern macht es nur schwerer.
Ein wirklicher Schutz gegen CSRF wird über Shared-Secrets gemacht.

Anders ausgedrückt:
In jedem Formular muss sich auch immer ein hidden-Feld mit einer sich ständig verändernden Zufallskombination befinden um sicherzustellen, dass das Formular von legitimer Quelle aus abgesendet wurde.

Siehe dazu auch: request_order und variables_order in php.ini

Grüße

Max
Bitte warten ..
Mitglied: EvilMoe
18.08.2009 um 06:33 Uhr
Eine Zufallskombination würde mich aber davon nicht abhalten. Man braucht diese ja einfach einlesen und übertragen. Die anderen Felder kann ich manipulieren. Das würde vielleicht nur "anfänger" davon abhalten.
Aber ein hidden Feld lässt sich nunmal ohne Probleme auslesen.

Man könnte natülrich den "referrer" prüfen. Allerdings wird der nicht immer übertragen und lässt sich auch manipulieren.
Bitte warten ..
Mitglied: maretz
18.08.2009 um 07:10 Uhr
Naja - das Zufallsfeld zusammen mit ner Gültigkeit wäre eine Möglichkeit... Auch wenn keine besonders sichere (da die Eingaben ja auch einfach zu langsam gemacht worden sein können).

Was man m.E. machen kann: Über die Session gehen -> wenn der Zufalls-Hash nicht mit dem Hash in deiner aktiven Session übereinstimmt (oder du gar keine aktive Session hast!) DANN wirst du rausgekickt... Damit dürfte das dann schon schwer werden das ganze zu manipulieren -> schickst du vom anderen Rechner einfach das Formular neu stimmen deine Session-Daten nicht mehr (da du die nicht geöffnet hast). Dh. Hash stimmt zwar - aber Session fehlt -> Kick in the Ass ;). Damit helfen dir die reinen Felder gar nichts mehr...
Bitte warten ..
Mitglied: nxclass
18.08.2009 um 08:18 Uhr
... also der 3. Absatz bezog sich nur auf die Frage nach einem anderen Ansatz.

Wenn Du das selbe Formular mehrfach benutzt könnte es sich lohnen eine eigenes Objekt dafür zu erzeugen was die Formularfelder, die Actions und noch andere Funktionen a'la Form-Feld-Validierung enthält.
... wie gesagt: Frameworks wie Zend ( http://framework.zend.com/ ) und Symfony ( http://www.symfony-project.org ) geben da gute Beispiele.
Bitte warten ..
Mitglied: dog
18.08.2009 um 15:19 Uhr
Moment...

Ihr schmeißt hier grade einige Netzwerktopologien durcheinander.

Man braucht diese ja einfach einlesen und übertragen.

Bei einer normalen Internetnutzung (also ein Benutzer hinter Router) sind Shared-Secrets und Session-Cookies der Way-To-Go, weil du sie eben nicht auslesen kannst. (Wo denn auch?)
Lies dir einfach mal den Wikipedia-Artikel zum Thema CSRF durch, dann verstehst du, warum Shared-Secrets pflicht sind.
Auch einen Zufalls-Hash in der Session zu speichern ist kein wirksamer CSRF-Schutz, weil man die Session-Daten ja immer mit sich rumträgt (siehe dazu mein Beispiel von oben)

Wenn du hier aber von einem Firmennetzwerk redest, bei dem der Admin einfach mit Wireshark mitlauschen könnte muss natürlich zu den Shared-Secrets auch noch HTTPS verwendet werden.
Das ist aber ein grundsätzliches Problem von HTTP: In einer genatteten Umgebung ohne SSL ist es immer Möglich z.B. per Interception-Proxy alle Daten zu klauen.

Grüße

Max
Bitte warten ..
Mitglied: EvilMoe
18.08.2009 um 16:37 Uhr
Zitat von dog:
Moment...

Ihr schmeißt hier grade einige Netzwerktopologien
durcheinander.

> Man braucht diese ja einfach einlesen und übertragen.


Ich meinte damit nicht Sessions oder Cookies sondern ein unsichtbares Feld im Formular
Bitte warten ..
Mitglied: gechger
18.08.2009 um 19:26 Uhr
wow, ist das viel Stoff.
Erstmal vielen Dank an Euch alle für diesen vielen Tips. Ich werde mir dann also erstmal Eure Links zu Gemüte führen und bei Fragen gerne auf Euch zurück kommen. Als relativer Newbie sind mir die ganzen Sicherheitsaspekte im php Bereich noch unvertraut. Aber ich sehe, daß man diesen Aspekt immer zu berücksichtigen hat.

Schöne Grüße
Christof
Bitte warten ..
Mitglied: N0ooo0B
22.08.2009 um 11:31 Uhr
<?php

if(isset($_POST["submit"])) {

echo "abgeschickt";
}

?>
<form method="post" action="">
<input type="submit" name="submit">
</form>


so funktions kannste ja als beispiel nehmen
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Sicherheit
gelöst Libreoffice Makros deaktivieren - Button fehlt in LO 5 (2)

Frage von Der-Phil zum Thema Sicherheit ...

Microsoft Office
Prüfung von Intervallen und Textausgabe in Excel (2)

Frage von traller zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...