Top-Themen

Aktuelle Themen (A bis Z)

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, 14649 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
Windows 7
Standby-Energiespar Button und Herunterfahren Button
Frage von hgshgsWindows 73 Kommentare

Hallo ihr Administratoren, ich bin neu hier und sage einfach mal hallo. :-) Folgendes Problem: Ich würde gerne unter ...

Weiterbildung
Weiterbildungen und Prüfungen
Frage von PharITWeiterbildung3 Kommentare

Hallo allerseits, ich hätte mal eine ganz allgemeine Frage: Ich würde gerne meinem Arbeitgeber in spe, oder vielleicht meiner ...

TK-Netze & Geräte
Siemens Octopus F400 - Reset Knopf betätigt
Frage von Stivo1994TK-Netze & Geräte7 Kommentare

Hallo administrato.de - Community! und zwar hat ein Kollege von mir den Reset Knopf bei der Siemens Telefonanlage Octopus ...

Router & Routing
CISCO CCNP-SWITCH Prüfung
gelöst Frage von edvmaedchenfuerallesRouter & Routing3 Kommentare

Hallo. Heute hat es bei meiner Prüfung leider knapp nicht gereicht und ich darf es nochmal versuchen. Eine generelle ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 3 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 4 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1010 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell21 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen17 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...