Webseiten Sperren

anjepieft

Mitglied
Hallo zusammen,
Ich habe ein kleines problem mit einem Programm das dazu gedacht ist den Zugriff auf bestimmte Webseiten zu sperren.
Dazu trägt das Programm die gewünschten Seiten in die hosts-Datei ein und leitet sie auf den Localhost um. Danach überprüft das Programm ständig die hosts-Datei ob sie manuell geändert wurde. Wenn das der Fall ist, werden alle Browser geschlossen und die hosts neu geschrieben.
Das Problem was ich damit habe ist, das es bei mir auf Win7 super funktioniert. Auf einem anderen Rechner der auch mit Win7 läuft klappt es nicht, da das Programm dort wohl keine Schreibrechte auf die hosts-Datei hat.
Nun meine Frage: Wie kann ich es schaffen, das das jar-File automatisch als Admin ausgeführt wird?
Oder gibts eine bessere Lösung Webseiten mit java zu sperren?

Ich hoffe das war verständlich erklärt und bedanke mich schonmal im voraus für eure Hilfe.

anjepieft
 
Hallo,

eine Webseite mit einem Programm auf dem Clientrechner zu sperren finde ich unpassend.
Wer sagt dir, dass der Benutzer das Programm nicht einfach beendet / wegschießt?
Trage lieber eine Regeln in den Router ein. Das kannst du auch auf bestimmte IP-Adressen oder mit mehr Aufwand auch für Benutzernamen machen.

Das einfachste wäre jedoch ein Proxy der bestimmte URLs verweigert.

Gruß
BK
 
Erstmal danke für Deine Antwort,
in erster Linie geht es mir um einfachheit. Natürlich besteht die Gefahr das der Anwender den Prozess einfach beendet aber das ist mir erstmal nicht wichtig. Gedacht war es so dass man einfach nur das jar-File Startet und der rest geschieht ohne das man sich um weiteres kümmern muss. Natürlich ist dein Vorschlag der professionellere Weg aber eben nicht das was ich suche.
Kann man ein jar-File automatisch mit Adminrechten ausführen, oder vom Programm die Rechte der zu manipulierenden Datei ändern lassen?

Gruß
anjepieft
 
Hallo,

soweit ich weiß kann man unter Windows kein Programm automatisch mit Adminrechten starten. Dies würde eine zu große Sicherheitslücke darstellen, wenn ein einfacher Paramter oder Befehl einem anderen Programm die Rechte geben würde.

Eine Möglichkeit, wie du auf die Hosts-Datei schreibend zugreifen könntest, wäre dem aktuellen Benutzer Schreibrechte auf die Datei zu geben, und den Haken bei "Schreib geschützt" rausnimmst. Ob dies automatisch auch geht weiß ich nicht, eventuell bietet die java.io.File Klasse entsprechende Methoden, notfalls musst du es halt per Hand machen.

Aber wie schon bereits gesagt, das Sperren von Webseiten via Hosts-Datei auf dem Client ist der falsche Ansatz.

Gruß
BK
 
ich glaube hier wurde das prinzip der HOSTS-datei völlig missverstanden

mal zur aufklärung
die HOSTS-datei war in den frühen anfängen des internets eine liste die aus NAMEN die IPs auflöste ...
das war damals auch noch kein problem ... denn die 50 einträge konnte noch jeder admin locker verwalten
als das ganze dann aber komplizierter und das internet größer wurde hat das sog. DNS erfunden das genau diese aufgabe übernimmt
auf modernen betriebssystemen wird sowieso erstmal der DNS gefragt
und nur wenn dieser mit einem AUFLÖSUNG NICHT MÖGLICH antwortet wird die HOSTS befragt
in aller regel sind heutige provider DNS server aber so eingestellt das diese dann die ip eines such-anbieters zurück geben und die entsprechenden server dann aus der anfrage eine suche zusammen basteln so das der aufruf der HOSTS komplett vermieden wird

das editieren der HOSTS ist sowieso nur SYSTEM-admins gestattet da diese datei unter windows in C:\windows\System32 liegt *system-verzeichnis > read-only mode für alle ... für admins read/write nur im safe-mode* und unter linux soweit ich weis sowie ROOT gehört und auch nur ROOT schreibrechte besitzt *es gibt sogar systeme auf denen wurde der write-mode für root entfernt was unter unix sowieso egal ist da ROOT halt immer read/write rechte hat*

was die sache mit dem *schließen der browser* angeht > NUR mit JNI möglich ...
du kannst einen fremden prozess der nicht aus deiner anwendung als child-process gestartet wurde nicht ohne JNI beeinflussen ... unter windows lässt das alleine die verarbeitungs-struktur des kernels nicht zu ... unter unix gäbe es sicher noch methoden einfach daten in /share zu überladen das das entsprechende programm abstürtzt was aber auch keine elegante variante wäre

wie mein vorredner bereits erwähnt wäre in diesem fall ein proxy-server oder entsprechende config des NAT sinnvoller und auch das technisch am besten realisierbare ...
naklar kannst du auch die proxy-software in java schreiben ... du kannst aber ohne JNI java nicht client-seitig zu soetwas nutzen *höchstens proxy auf localhost legen und die java-app als dienst ausführen*

auf gut deutsch : dein projekt ist in dem sinne wie du es dir vorstellst NICHT REALISIERBAR
 
Erstmal Danke für die Antworten.
Einige von den sachen können so aber nicht ganz stimmen, denn ich bin mit dem Programm ja bereits so gut wie fertig und auf jedem XP und NT System hat alles vom editieren der Hosts-Datei, bis zum schließen der Browser geklappt. Ebenso auf einigen Win7 Systemen. Allesamt haben die Hosts-Datei beachtet und somit auf den Localhost umgeleitet.
Das einzige was bei einigen Win7 Systemen nicht geklappt hat war das editieren der Hosts-Datei. Hatte mich gewundert das das auf manchen klappt und auf manchen nicht obwohl ich auf allen als Admin angemeldet war.
Dann schaue ich mich mal nach ner geeigneteren Lösung um.

Gruß
anjepieft
 
Zurück