Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11174[/thread]

quelltext des scripts, nicht sichtbar?



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
#Kein Kommentar
 2008-01-23 16:27
#105066 #105066
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
hallo,

hätte mal eine verständnisfrage in sachen Webprogrammierung.

angenommen ich hätte irgendein script (Perl, PHP,...) auf meinem Webserver.
dieses script führt eine bestimmte aktion aus, aber nur wenn es über POST ein passwort zugeschickt bekommt, dass gültig ist.

also ungefähr so (mal auf die schnelle in PHP):
Code: (dl )
1
2
3
4
5
6
$passwort = "007";
$eingabe = $_POST['eingabe'];

if ($eingabe === $passwort){
//jetzt wird irgendetwas gemacht...
}


jetzt könnte man natürlich im quelltext das passwort einsehen, wenn man sich den quelltext angucken könnte.

jetzt kommt meine frage:
könnte ein vermeintlicher hacker iwie auf meine seite kommen sich dieses script iwie herunterladen oder angucken und so das passwort herauskriegen? oder ist das unmöglich (außer über den FTP-zugang)?

ich weiß zwar das der quelltext des scriptes selbst nicht angezeigt wird, aber ist das sicher? was verwendet ihr denn, wenn ihr so eine passwortabfrage machen müsst? speichert ihr das passwort auch einfach im quelltext?

bin dankbar für die aufklärung, auch wenn das bestimmt zum grundwissen in der webprogrammierung gehört....
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Linuxer
 2008-01-23 16:58
#105067 #105067
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Hi,

Klartextpasswörter sind immer eine schlechte Idee.

Speicher einen aus dem Passwort mit crypt() erstellten String in einem String im Skript.

Wenn das Passwort als Parameter übergeben wurde, wendest Du nochmal crypt() an und vergleichst das Ergebnis mit dem gespeicherten String.

http://www.php.net/manual/en/function.crypt.php
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Taulmarill
 2008-01-23 16:59
#105068 #105068
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Solange dein Webserver richtig konfiguriert ist, keine Bugs hat und du sicher programmiert hast, ist es nicht möglich das Script im Quelltext einzusehen. Gute Konfiguration ist aber schwierig und Bugfreie Webserver gibt es nicht. Daher währe es ratsam, wenn du das Passwort mit einem one-way-Hash verschlüsselst (z.b. CPAN:Digest::SHA2).
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
murphy
 2008-01-23 17:14
#105069 #105069
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Linuxer+2008-01-23 15:58:41--
[...]
Klartextpasswörter sind immer eine schlechte Idee.

Speicher einen aus dem Passwort mit crypt() erstellten String in einem String im Skript.

Wenn das Passwort als Parameter übergeben wurde, wendest Du nochmal crypt() an und vergleichst das Ergebnis mit dem gespeicherten String.
[...]


Die Übertragung des Passwortes im Klartext vom Client zum Server ist aber auch keine gute Idee, es sei denn die Verbindung ist bereits authentifiziert und verschlüsselt, zum Beispiel mit SSL.

Für ungesicherte Verbindungen wäre ein Frage-Antwort-Protokoll besser: Der Server schickt einen Schlüssel an den Client, welcher damit das Passwort verschlüsselt und an den Server zurückschickt. Das ist natürlich bei Webanwendungen etwas umständlich zu bewerkstelligen, aber es hilft gegen Replayattacken.
When C++ is your hammer, every problem looks like your thumb.
Linuxer
 2008-01-23 19:41
#105071 #105071
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
murphy+2008-01-23 16:14:26--
Linuxer+2008-01-23 15:58:41--
[...]
Klartextpasswörter sind immer eine schlechte Idee.

Speicher einen aus dem Passwort mit crypt() erstellten String in einem String im Skript.

Wenn das Passwort als Parameter übergeben wurde, wendest Du nochmal crypt() an und vergleichst das Ergebnis mit dem gespeicherten String.
[...]


Die Übertragung des Passwortes im Klartext vom Client zum Server ist aber auch keine gute Idee, es sei denn die Verbindung ist bereits authentifiziert und verschlüsselt, zum Beispiel mit SSL.

Für ungesicherte Verbindungen wäre ein Frage-Antwort-Protokoll besser: Der Server schickt einen Schlüssel an den Client, welcher damit das Passwort verschlüsselt und an den Server zurückschickt. Das ist natürlich bei Webanwendungen etwas umständlich zu bewerkstelligen, aber es hilft gegen Replayattacken.


edit: vorab: mag sein, dass ich das geschriebene Wort hier falsch (über)interpretiere... :/edit
Habe ich eine Klartextkommunikation zwischen Server und Client empfohlen oder warum zitierst Du meine Antwort für Deine Antwort?
Afaik: Auch wenn die Verbindung SSL-verschlüsselt ist, kommen die Parameter doch unverschlüsselt im Skript an, oder irre ich da?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Taulmarill
 2008-01-23 19:52
#105072 #105072
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Linuxer+2008-01-23 18:41:24--
Afaik: Auch wenn die Verbindung SSL-verschlüsselt ist, kommen die Parameter doch unverschlüsselt im Skript an, oder irre ich da?


Bei GET bin ich mir nicht sicher, aber POST Variablen werden defenitiv mit verschlüsselt.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
moritz
 2008-01-23 20:37
#105073 #105073
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Also bei https läuft das komplette HTTP, inklusiver aller Header, über einen verschlüsselten Layer.
Damit sind auch GET-Parameter verschlüsselt, wenn du so willst.
nepos
 2008-01-23 21:03
#105074 #105074
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Im Normalfall sieht man bei HTTPS nur den CONNECT-Befehl, durch den die SSL-Verbindung aufgebaut wird. Alles andere, auch die angesurften URLs sind dann in der SSL-Verbindung verschlüsselt.
Linuxer
 2008-01-23 22:04
#105076 #105076
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Taulmarill+2008-01-23 18:52:15--
Linuxer+2008-01-23 18:41:24--
Afaik: Auch wenn die Verbindung SSL-verschlüsselt ist, kommen die Parameter doch unverschlüsselt im Skript an, oder irre ich da?


Bei GET bin ich mir nicht sicher, aber POST Variablen werden defenitiv mit verschlüsselt.


Erwarten würde ich, dass beide Übertragungsarten verschlüsselt werden (siehe nepos' Beitrag).

Mein "Afaik" bezog sich nun direkt auf das Skript: Egal ob die Daten via POST oder GET (und egal ob die Daten verschlüsselt oder unverschlüsselt) geschickt worden, im Skript greift man mit einem simplem param('parameter') darauf zu, ohne sich um die eventuelle Verschlüsselung kümmern zu müssen.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Hagen
 2008-01-23 22:59
#105077 #105077
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
murphy+2008-01-23 16:14:26--
Für ungesicherte Verbindungen wäre ein Frage-Antwort-Protokoll besser: Der Server schickt einen Schlüssel an den Client, welcher damit das Passwort verschlüsselt und an den Server zurückschickt. Das ist natürlich bei Webanwendungen etwas umständlich zu bewerkstelligen, aber es hilft gegen Replayattacken.


Interessanter Ansatz. Dann müsste die Verschlüsselung auf dem Client/im Browser mit JavaScript realisiert werden. ... oder gibt es noch eine andere (bessere) Möglichkeit? Für alle die JS deaktiviert haben, wäre das dann aber ein Hindernis.
Gruß
Hagen
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2008-01-23 16:27.