Computername des Webseitenbesuchers?
Izi
- php
Hallo,
und zwar möchte ich auf meiner Webseite Leute bannen, die sich unerlaubt in den Adminaccount einlogen möchten.
Dabei bin ich auf die Idee mit der phpinfo(); gekommen. Wenn mal phpinfo(); ausführen lässt erscheint:
System Windows NT "COMPUTERNAME" 5.1 build 2600 (Windows XP Professional Service Pack 3) i586
Build Date Nov 20 2009 17:20:57
Compiler MSVC6 (Visual C++ 6.0)
(....)
und zwar möchte ich neben remote_user auch den Computernamen auslesen, um im Falle eines Falles jemand von meiner Website z.B. zu google umzuleiten.
Weiß jemand wie man es auslesen kann?
JA: Ich bin mir der Gefahren und negativen Aspekte bewusst, dass es bestimmte Methoden etc. gibt das zu umgehen und wer sonst noch ausgesperrt würde. Das ist fast schon wie das ständige abwerten von Frames. Man hat auch andere Träume als nur die Webseite für die Suchmaschinen anzupassen. Ich möchte nur eine Antwort auf die Frage. Schade dass ich das hier erwähnen muss und doch gleich wieder Kommentare kommen müssen so wie ich das kenne ...
Vielen Dank für jede Antwort die mich weiterbringt!!
Hello,
Weiß jemand wie man es auslesen kann?
Hast Du Dir schon mal einen Request angesehen? Das geht z.B. mit einem IP-Logger.
Die einfachste Übung dazu wäre, sich mal den HTTP-Request, der im Gesamtrequest enthalten ist, anzusehen. Das kannst Du z.B. mit der Live-HTTP-Headers-Extension des Firefox prima machen.
Was nicht mitgesandt wird beim Request, kann auch nicht ausgewertet werden. Und von dem was mitgesandt wird, kann das meiste gefaked werden...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo!
Auch wenn ein Bann immer "leicht" zu sein scheint, so kann nie absolute Gewissheit vorhanden sein, ob der gebannte User wirklich gebannt ist und bleibt, oder ob dieser sich durch diverse Einstellungen dem Bann entziehen kann.
Effektiver und irrtumsresistenter ist in diesem Kontext wohl eine bessere Absicherung des Logins, idealerweise durch barrierefreie Kontrollen der Eingabe. Wie dies funktioniert, steht in einer anderen Akte.
Liebe Grüße aus Norddeutschland.
Hi,
und zwar möchte ich auf meiner Webseite Leute bannen, die sich unerlaubt in den Adminaccount einlogen möchten.
wie definierst du "unerlaubt", und welchen Adminaccount meinst du? Geht es um ein Admin-Login innerhalb deines Webangebots? Das ist doch dann sicher mit Benutzername und Passwort versehen.
Wenn mal phpinfo(); ausführen lässt erscheint:
System Windows NT "COMPUTERNAME" 5.1 build 2600 (Windows XP Professional Service Pack 3) i586
Build Date Nov 20 2009 17:20:57
Compiler MSVC6 (Visual C++ 6.0)
Ja, aber das sind Informationen, die PHP nur über den eigenen Host rauskriegt, auf dem es ausgeführt wird. Von deinen Web-Besuchern bekommst du den Computernamen ebensowenig wie den Anmeldenamen des Benutzers (von Windows-spezifischen NTLM-Konfigurationen mal abgesehen). Da kriegst du im HTTP-Header nur den User-Agent-String, der Aufschluss über Browser und Betriebssystem geben kann (aber nicht muss).
und zwar möchte ich neben remote_user auch den Computernamen auslesen, um im Falle eines Falles jemand von meiner Website z.B. zu google umzuleiten.
Das ist AFAIK nicht möglich, wenn deine Besucher nicht spezielle Software oder eine spezielle Konfiguration verwenden, die solche Informationen herausgibt.
Ich halte es auch nicht für sinnvoll, davon abgesehen.
So long,
Martin
Ich danke für die hilfreichen Beiträge zum herrausfinden des Computernamens eines Webseitenbesuchers mit PHP.
Durch Martin die ausfürhliche Info:
Es ist nicht möglich, da es sich um etwas handelt das nur auf dem eigenen host (Server bzw. localhost) abfragbar ist.
Durch Tom (http://selfhtml.bitworks.de) den Tipp:
Mit HTTP_REQUEST auf das überhaupt Mögliche ausfragen und darauß verwendware informationen sammeln.
Jeremy auch Danke, auch wenn ich sowas mit meinem PS ausschließen wollte, nochmal von ihm die Info, das die Daten die übermittelt werden gefälscht werden können.
Thx,
damit sollte das Thema in Zukunft in den Suchmaschinen gut findbar sein. Ist alles gut beantwortet was man wissen muss.
Hallo,
Weiß jemand wie man es auslesen kann?
unter Windows mit dem IE unter bestimmten Voraussetzungen (die bei Deinem Zielpublikum bestimmt nicht gegeben sind) mit JScript bzw. VBScript. Ich hab' vor Jahren mal eine Testseite dazu ins Internet gestellt - und die Voraussetzungen detailliert beschrieben.
Per Ajax könntest Du den Rechnernamen anschließend übermitteln :-)
Freundliche Grüße
Vinzenz
Moin!
http://panopticlick.eff.org/index.php?action=log&js=yes
und <?php phpinfo(); ?>
geben Dir Antworten genug.
Insbesondere:
$_SERVER["HTTP_USER_AGENT"]
$_SERVER['HTTP_ACCEPT']
$_SERVER['HTTP_ACCEPT_LANGUAGE']
$_SERVER['HTTP_ACCEPT_ENCODING']
$_SERVER['HTTP_ACCEPT_CHARSET']
$_SERVER['REMOTE_ADDR']
könnten Dein Interesse finden.
VORSCHLAG: Logge einfach die 50 letzten Anmeldeversuche mit falschen Passwort
<?php
function loggeAnmeldungSperreAus($bolAnmeldungErfolgreich) {
## $bolAnmeldungErfolgreich enthalte true bei erfolgreicher Anmeldung, sonst false
$strBrowserEigenschaften=md5(
$_SERVER['HTTP_USER_AGENT']
. $_SERVER['HTTP_ACCEPT']
. $_SERVER['HTTP_ACCEPT_LANGUAGE']
. $_SERVER['HTTP_ACCEPT_ENCODING']
. $_SERVER['HTTP_ACCEPT_CHARSET']
);
$arZeilen = file('./logs/falscheAnmeldungen');
if ($bolAnmeldungErfolgreich) {
## Ausfiltern der IP
foreach ($arZeilen as $strZeile) {
$strZeile = trim($strZeile); # da klebt manchmal ein Zeilendezeichen...
listen ($md5, $ip) = explode(';',$strZeile)
if ($ip != $_SERVER['REMOTE_ADDR']) {
$arZeilen_neu[] = strZeile;
}
}
file_put_contents('./logs/falscheAnmeldungen', implode('\n';$arZeilenNeu));
} else {
## Anmeldung wahr falsch. Zählen, ob schon zwei falsche Anmeldungen gab, wenn ja, dann sperren
counter = 0;
foreach ($arZeilen as strZeile) {
$strZeile = trim($strZeile); # da klebt manchmal ein Zeilendezeichen...
listen ($md5, $ip) = explode(';',$strZeile);
if ($ip == $_SERVER['REMOTE_ADDR'] && $md5 == $strBrowserEigenschaften) {
$counter ++;
if (2 == $counter) {
## sperren:
$htaccess = file_get_contents('./../.htaccess');
$htaccess .= "\n".'Deny from '.$_SERVER['REMOTE_ADDR'];
file_put_contents('./../.htaccess', $htaccess);
header('Error: 403');
print '<h1>403: Forbidden</h1>' ;
exit; ## Du kannst hier abbrechen. Die beiden Einträge werden irgendwann von selbst verschwinden
} # endIf
} # endIf
} #endForeach
## Hinzufügen:
array_push($arZeilen, $strBrowserEigenschaften.';'.$_SERVER['REMOTE_ADDR']);
## Auf 50 kürzen, dass sollte allerdings nur einmal stattfinden
reset($arZeilen);
if (while 50 < count($arZeilen)) {
array_shift($arZeilen);
} #endIf
## schreiben:
file_put_contents('./logs/falscheAnmeldungen', implode('\n';$arZeilen));
} #endIf
return true;
} #endFunction
?>
Hinweise:
-- der Code ist ungetestet und beinhaltet sehr wahrscheinlich noch Fehler. Es ist ein Vorschlag.
-- triviale Funktionen sind nicht erläutert, schlage diese bei www.php.net nach.
-- Auf jegliche Fehlervorsorge (isset(), file_exists, is_readable) wurde verzichtet.
-- Die Parametrisierung (Anzahl Anmeldeversuche (3), Anzahl Zeilen in Logfile(50), Ort von .htaccess und des Logfiles) überlasse ich auch Dir
-- ich habe das absichtlich als Funktion geschrieben :)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Moin!
if (while 50 < count($arZeilen)) {
array_shift($arZeilen);
} #endIf
muss natürlich
while ( 50 < count($arZeilen) ) {
array_shift($arZeilen);
} #endWhile
lauten. Habe ich trotz Vorschau übersehen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Hi!
-- der Code ist ungetestet und beinhaltet sehr wahrscheinlich noch Fehler. Es ist ein Vorschlag.
Du hast ihn nicht ein einziges Mal zum Test laufen lassen. Ich zähle auf Anhieb schon 5 syntaktische Fehler, die Wiederholungen durch Copy&Paste nicht mitgerechnet. Lass doch den Leuten das Erfolgserlebnis des Selbstprogrammierens statt ihnen ungetesteten und fehlerhaften Code vorzusetzen.
Lo!
Moin!
Hi!
-- der Code ist ungetestet und beinhaltet sehr wahrscheinlich noch Fehler. Es ist ein Vorschlag.
Du hast ihn nicht ein einziges Mal zum Test laufen lassen.
Das Problem ist, dass ich zur Erklärung des Theaters in natürlicher Sprache wesentlich mehr schreiben müsste.
Ich zähle auf Anhieb schon 5 syntaktische Fehler,
Dann war ich ja, dafür dass ich es in einer <textarea> geschrieben habe, richtig gut :)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Dass du den Rechnernamen (der je nach Netztyp u.U. auch gar nicht existieren muss) nicht auslesen kannst hast du bereits erfahren.
Mein Vorschlag wäre: Setz' einfach ein Cookie.
Das ist genauso leicht oder schwer zu fälschen wie alle anderen Angaben und die false-positive-Quote geht gegen null.
Was man aber auch machen könnte wäre IPs vorübergehend zu sperren, wenn Bots mit Bruteforce angreifen und sie nach dem fünften Mal nicht mehr dürfen läuft der Angriff ins Leere. Da das aber nicht gegen Bot-Netze hilft (da ganz doll viele verschiedene IPs) kann man auch generell die Anmeldeversuche pro Minute auf vier (oder so) begrenzen. Dadurch sind entsprechende Angriffe auch relativ wenig erfolgversprechend.
Mein erster Ansatz wäre allerdings einfach mal alle Angriffe mitloggen, vielleicht erkennst du ein Muster, welches du manuell aussperren kannst. Z.B. ein bestimmter Adressbereich oder UserAgent (soweit nicht verbreitet) oder auch immer gleiche Uhrzeiten, an denen du den Admin-Login generell abschalten könntest. In Kombination mit dem oben genannten Cookie würdest du auch gleich sehen ob der Angreifer Cookies annimmt bzw. ob es immer der gleiche ist (wenn der Inhalt des Cookie einfach zufällig also einzigartig ist).
Hallo Izi,
was die Identifizierbarkeit von Browsern angeht hier ein etwas anderer Ansatz: https://panopticlick.eff.org/
Sowohl mit als auch ohne javascript erhalte ich für meine Browser:
Your browser fingerprint appears to be unique
among the 1,122,972 tested so far.
Viele Grüße,
Jochen
Moin!
Hallo Izi,
was die Identifizierbarkeit von Browsern angeht hier ein etwas anderer Ansatz: https://panopticlick.eff.org/Sowohl mit als auch ohne javascript erhalte ich für meine Browser:
Your browser fingerprint appears to be unique
among the 1,122,972 tested so far.
Darauf beruhte ja mein Vorschlag.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix