Chris Hunter
Hey ich hab mal ein kleines Problemchen, und zwar möchte ich mein javascript verschlüsseln sodass es im quelltext nicht lesbar aist aber dennoch ausführbar bleibt.
hat da jemand einen tip für mich. links oder sonstwas...
es handelt sich um dynamisches javascript das mit PHP generiert wird..
daHooligan
das ginge wohl, wenn überhaupt mit einer art "include" aber sonst dürfte das kaum gehen, weil das script ja vom browser ausgeführt werden muss
Chris Hunter
ja ich habe aber schon programme gesehen die ganze websites so verschlusseln.
ich brauch nur n algorythmus um den code zu encoden...
müsste dan in etwa sowas rauskommen:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
|
document.write(unescape('%3C%73%63%72%69%70%74%20%6C%61%6E%
67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%
22%3E%66%75%6E%63%74%69%6F%6E%20%64%46%28%73%29%7B%
76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%73%
2E%73%75%62%73%74%72%28%30%2C%73%2E%6C%65%6E%67%74%
68%2D%31%29%29%3B%20%76%61%72%20%74%3D%27%27%3B%66%
6F%72%28%69%3D%30%3B%69%3C%73%31%2E%6C%65%6E%67%74%
68%3B%69%2B%2B%29%74%2B%3D%53%74%72%69%6E%67%2E%66%
72%6F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%
61%72%43%6F%64%65%41%74%28%69%29%2D%73%2E%73%75%62%
73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31%2C%31%29%
29%3B%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%
75%6E%65%73%63%61%70%65%28%74%29%29%3B%7D%3C%2F%73%
63%72%69%70%74%3E'));dF('*8HXHWNUY*75QFSLZFLJ*8I*77of%
7Bfxhwnuy*77*8J*5I*5F44*75XFRUQJ*75XHWNUY*75*786*5I*5Ffqjwy*7%3D*7%
3CMjqqt*75%5Ctwqi*7%3C*7%3E*8G*5I*5F*8H4XHWNUY*8J*5I*5F*5I*5F5')
|
|
suche aber vielleicht nciht ganz sowas einfachen wie unescape sondern eher etwas das man dann zur laufzeit decoden kann und dann ins document.write reinsetzt...
ThiefMaster
rawurlencode in PHP.
Decodiert wird das in Javascript mit unescape.
Aber es ist absoluter Unsinn - jeder mit etwas Ahnung kann das "entschlüsseln"...
Chris Hunter
ja ers geht nur darum es mit ein paar verschiedenen algorythmen die einen schlüssel benutzen den man in ein cookie schreibt so zu verschlüsseln das das aufrufen des queltextes und das entschlüsseln länger dauert als 30-40 sekunden.
mehr will ich gar nicht...
m scout
Hi Chris,
so ganz klar ist mir das jetzt nicht geworden. Was genau willst du vor wem verbergen? Beschreib einfach die Anforderungen und dein Vorhaben genauer.
Grundsätzlich kannst du den Script Quelltext nicht vo der Maschine verbergen, die ihn ausführen soll. Selbst wenn du echte Verschlüsselung verwendest - im Unterschied zur simplen Codierung im Beispiel - muss ja auch der Schlüssel auf der Maschine bekannt sein.
30 bis 40 Sekunden sind eine Ewigkeit. Iin einem simplen Local Proxy kann ich alles in Echtzeit analysieren. Es kann mit der Entschlüsselung sogar früher begonnen werden, als im Browser. Zeitkriterien kannst du aber nicht gut runtersetzen, weil sonst die Verbindung bei einer langsameren Leitung und einer langsmeren Maschine nicht mehr zuverlässig klappt.
Bekanntlich gibt es keine clientweitige Sicherheit. Die Entschlüsselungsverfahren und der Weg, auf dem der Schlüssel übertragen wird, sind auf der Clientmaschine beobachtbar.
Grüsse,
scout
Chris Hunter
ja im grunde ist mir das durchaus bewusst. ich erklär einfach mal das anwendungsgebiet:
ich habe ein browsergame. ein clone von hackthenet (htw.midir.net)
hier werden angriffe von eigenen rechnern auf fremde rechner gemacht.
je nachjdem wie hoch ein item ausgebaut wird je kürzer sind die warte zeiten zwischen angriffsanforderung und angriffsausführung.
diese wartezeit wird zu zweit mit einem javascript gelöst.
nach ablauf einer bestimmten zeit wird ein formular abgeschickt welches dann auf eine seite weiterleitet die den angriff ausführt. jetzt ist bekanntgeworden das man das formular durch eingabe von java script:document.forms[0].submit abschicken kann.
erster lösungsansatz von mir war vor das formular zufällig viele forms einzufügen um von forms[0] wegzukommen. trotzdem kann man, wenn man den quelltext öffnet und liest trotzdem sehen was man eingeben muss weil ja hier der code steht. man kann also mit einfachem copy und paste das selbe ergebnis erzeihlen wie vorher. deshalb möchte ich wenn möglich am besten die gesammte seite verschlüsseln. der aufwand diesen quelltext zu entschlüsseln soll sich mit einer maximalen wartezeit von 30-40 sekunden nicht rechnen.
hoffe die sache wird jetzt klar...
ThiefMaster
| Zitat: |
| jetzt ist bekanntgeworden das man das formular durch eingabe von java script:document.forms[0].submit abschicken kann. |
Öhm das gehört dann aber gefixt...
Und man kann _immer_ ein Script schreiben, um das in 1s zu entschlüsseln.
m scout
tja, da hilft wohl nur eines. Wie im wirklichen Leben, sind alle relevanten Prüfungen auf der Serverseite durch zu führen. Dann sieht der Teilnehmer im clientseitigen Skripttext nur die Aufforderung zur Dateneingabe.
Dann hast du aber natürlich kein Browsergame mehr, sondern das Spiel läuft unter php o.ä. auf dem Server.
Ein Browsergame kannst du nicht gegens Schummeln absichern.
scout
Chris Hunter
doch, sicherlich. ist ja n browsergame auf PHP&mySQL basis. habe jetzt aber ne lösung wie ich das aufm server prüfen kann...
ThiefMaster
| Zitat: |
Dann hast du aber natürlich kein Browsergame mehr, sondern das Spiel läuft unter php o.ä. auf dem Server.
Ein Browsergame kannst du nicht gegens Schummeln absichern. |
Du weißt aber, dass Browsergames genau das machen (von der Logik her auf dem Server laufen)?
Chris Hunter
ich schon , ja.
m scout
Nein, mir war das nicht klar. Danke für die Aufklärung.
Wenns eh auf dem Server rennt, gibt es doch keinen Grund, etwas sicherheits- oder cheatrelevantes auf dem client zu machen.
Aber du hast
| Zitat: |
| jetzt aber ne lösung wie ich das aufm server prüfen kann... |
dann ist ja das Problem gelöst.
gruss,
scout
tkshorty
also ich würds auch serverseitig machen, also einfach n timestamp in ne db reinhauen.
aber falls du das weiterhin mit dem js regeln willst,
versuch doch mal das script in ne .js datei auszulagern.
bringt natürlich nur was wenns in nem geschütztem verzeichnis liegt
also berechtigungen nur execute nicht read.
müsste eigentlich klappen
Chris Hunter
bringt nicht viel da ja das formular trotzdem im quellstext steht....