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, 14362 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 ..
Ähnliche Inhalte
PHP
gelöst PHP - unique-array() und sort() (14)

Frage von ThomasXYZ zum Thema PHP ...

PHP
Homepage nach PHP Update blank (4)

Frage von ric2k17 zum Thema PHP ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Komplett neues Netzwerk, Ubiquiti WLAN, Router, Switch (16)

Frage von Freak-On-Silicon zum Thema LAN, WAN, Wireless ...

CMS
Lokales Wordpress im LAN - wie aufsetzen? (15)

Frage von Static zum Thema CMS ...

LAN, WAN, Wireless
IP im privaten Netz nicht erreichbar (14)

Frage von guntis zum Thema LAN, WAN, Wireless ...

Java
gelöst Net user per script aus txt oder csv für FTP (12)

Frage von OlliPWS zum Thema Java ...