Toon posts:

[js] file beschermen tegen downloaden

Pagina: 1
Acties:
  • 133 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Is er een manier om het downloaden van een js file tegen te gaan.

Als je nu de source van mijn pagina bekijkt en dan het src-adres van de js-file in typed gaat internet explorer deze file downloaden.

Is er een manier om je code te beschermen?

  • Willem
  • Registratie: Februari 2001
  • Laatst online: 00:23
Nee.

Motor (of auto) onderhoud bijhouden


  • StruvusMaximus
  • Registratie: Februari 2000
  • Laatst online: 03-01-2025
moet je even zoeken bij hotscripts.com staat volgens mij een scriptje ervoor, die de boel encrypt.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:12

crisp

Devver

Pixelated

obfuscaten, maar ik kan me niet voorstellen dat je JS code hebt die zo waardevol is dat je 'm wilt beschermen. JS wordt client-side uitgevoerd; daarvoor moet de code op de client beschikbaar zijn. Hij komt dus hoe dan ook in je temp internet files te staan.

Intentionally left blank


  • Tribal_T
  • Registratie: Oktober 2001
  • Laatst online: 17-04 12:42

Tribal_T

PSN ID: Tribal_T

je kan rightmouse klick uitschakelen.

<body oncontextmenu="return false">

Maar dat is voor IE.

Anders moeje ff googelen om het met een Js'je te doen

Anyone who takes himself too seriously always runs the risk of looking ridiculous; anyone who can consistently laugh at himself does not


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:12

crisp

Devver

Pixelated

Tribal_T schreef op 08 November 2002 @ 10:03:
je kan rightmouse klick uitschakelen.

<body oncontextmenu="return false">

Maar dat is voor IE.

Anders moeje ff googelen om het met een Js'je te doen
Dat zou ik dus ten zeerste willen afraden; ten eerste is het irritant (veel mensen navigeren nog wel eens via het contextmenu), en ten tweede is het makkelijk te omzeilen.
Obfuscaten van je code heeft denk ik meer effect; mensen gaan dan niet meer de moeite doen om het te doorgronden; zeker niet als de meeste scripts toch wel ergens anders te vinden zijn. In elk geval moet iemand dan echt moeite gaan doen. (probeer bijvoorbeeld maar eens de easter egg in de GoT Tracker te vinden ;) )

Intentionally left blank


Verwijderd

Topicstarter
ik heb al op verschillende pagina's gezien dat ze zoiets deden

code:
1
<SCRIPT language=JavaScript src="/_admin/GUI_tools/wysiwyg_editor/javascript/context_menu.js.asp?879174efa624" type=text/javascript></SCRIPT>


En dan is de code niet te downloaden ik heb het ook al gezien dat ze het zelfde deden maar dan met .php ipv asp.
hoe werkt dat dan

nou de code is niet echt waardevol tis alleen zonde van de tijd

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:12

crisp

Devver

Pixelated

Verwijderd schreef op 08 november 2002 @ 10:07:
ik heb al op verschillende pagina's gezien dat ze zoiets deden

[...]

En dan is de code niet te downloaden ik heb het ook al gezien dat ze het zelfde deden maar dan met .php ipv asp.
hoe werkt dat dan

nou de code is niet echt waardevol tis alleen zonde van de tijd
Dan nog is het terug te vinden in je temp internet files...

Intentionally left blank


Verwijderd

Topicstarter
tribal_T:
aan rechtermuis knop heb ik nix want daar zit al een eigencontext menu achter en dat werkt niet want dan kunnen ze nog de source bekijken via het menu in ie.

crisp:
hoe werkt dat Obfuscaten en wat doet het met je code

  • ArmEagle
  • Registratie: Oktober 2001
  • Laatst online: 16-12-2025

ArmEagle

Duzz.

Die asp levert een .js file aan de browser. Die asp zelf kun je nooit downloaden. En als in de .asp gecontroleerd wordt op de referer dan zul je ook geen antwoord krijgen als je de url in je adresbalk kopieert.

Edit:

Hetzelfde kun je ook met plaatjes doen. Maar zoals crisp zegt zal het wel in je temp files komen te staan.

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01-05 13:23
Verwijderd schreef op 08 november 2002 @ 10:11:
crisp:
hoe werkt dat Obfuscaten en wat doet het met je code
Ik denk dat ie encrypten bedoelt. Er is in JavaScript een functie die je code kan encrypten. De gebruikte encryptie is echter zeer laag en met een 486 binnen een uur te kraken. De huidige pc's doen er dus nog korter over (net een trage website ;)). Op zich wel een leuke functie; niet iedereen weet namelijk dat je die code zo makkelijk kunt terug halen. Het is iig lastiger om je code zomaar te jatten :)

Verwijderd

Topicstarter
armEagle:
Dat heb ik al geprobeerd metdie reverer, maar dat werkt ook de meeste mensen doen view source en typen dan gelijk het adres in de adres balk in en dan is de reverer gelijk aan wat hij is als je hem wilt aanroepen vanaf de gewenste pagina

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:12

crisp

Devver

Pixelated

Obfuscaten = je code onleesbaar maken. Bijvoorbeeld geen enters gebruiken; variabelen en functies gekke namen geven etcetera.
voorbeeld

Intentionally left blank


  • ArmEagle
  • Registratie: Oktober 2001
  • Laatst online: 16-12-2025

ArmEagle

Duzz.

Hmm dat is 'quite vaag'. Wist ik niet en vind ik ook niet echt kloppen dat de browsers zo werken.

Edit:
OF Mozilla werkt niet op die manier, OF er is een andere manier om zoiets te controleren.

Verwijderd

FlamerX schreef op 08 november 2002 @ 10:15:
[...]

Ik denk dat ie encrypten bedoelt. Er is in JavaScript een functie die je code kan encrypten. De gebruikte encryptie is echter zeer laag en met een 486 binnen een uur te kraken. De huidige pc's doen er dus nog korter over (net een trage website ;)). Op zich wel een leuke functie; niet iedereen weet namelijk dat je die code zo makkelijk kunt terug halen. Het is iig lastiger om je code zomaar te jatten :)
Ik weet niet wat jij dan onder encrypten verstaat, ik dacht dat obfuscaten simpelweg het 'onleesbaar maken van code' inhield. Oftewel, je kunt een aantal dingen doen:

* met een scriptje even alle returns en mogelijk te verwijderen spaties strippen uit je code
* variabele 'subtotaal' renamen naar 'sn26kns'

Kijken wie er dan nog je code gaat begrijpen >:)

edit:
Als je echt waardevol spul hebt en het hoeft niet per se clientside uitgevoerd te worden, kijk dan eens naar serverside scripting :)
Als je het zoveelste DHTML navigatiemenuutje hebt gemaakt moet je je misschien afvragen hoe zinvol het is om je code te beschermen ;)
Je kunt zoveel streken met je code uithalen als je wilt, maar hij blijft beschikbaar op het systeem van de gebruiker.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Maar waarom wil je je code beschermen? Is het zo speciaal dat niemand dat mag kopieren...

Zolang JS nog clientside is kun je dat nooit beschermen.

Verwijderd

Topicstarter
Dat obfuscaten ziet er inderdaad erg onleesbaar uit.
dat neemt de zin al weg om de code leesbaar te gaan maken en te gaan gebruiken

Verwijderd

Topicstarter
fool:
Nee ik heb niet het zoveelste DHMTL menu gemaakt,maar een zoveelste wysiwyg-editor maar dan met meer functionaliteit dan de meeste.

opzich is het niet echt erg dat het gecopieerd wordt, maar ik dacht misschien is het wel simpel te beveiligen

Verwijderd

obfuscaten lijkt me het meest effectief maar als je nog regelmatig iets aan moet passen is het wel erg lastig (telkens weer je 'source'-js aanpassen en obfuscaten).

Van die encrypt scripts of programma's (zoals HTML Guardian) werken iig niet. ;)

...en comments weglaten natuurlijk (=obfuscaten). Belangrijkste is denk ik het iig zo lastig maken dat de 'dief' niet door 1 a 2 params te veranderen de hele functionaliteit kan overnemen maar daar ff wat tijd in moeten stoppen.

Vraag blijft: wie gaat er nou helemaal je script uitpluizen en is wat hij dan vindt zo bijzonder dat hij het niet op een script-site of google kan vinden?

Verwijderd

Tja... het is een interpreted taal, die client-side wordt uitgevoerd. Die kan je dus niet 'beveiligen' of 'encrypten' voor de simpele reden dat de client-site interpreter deze code moet kunnen snappen en uitvoeren.

Als je zoiets niet wil moet je of server side scripting gaan gebruiken, of een stand-alone proggy gaan schrijven dat je gecompileerd (binary) kan distribueren...

Of maak het gewoon open-source, en profiteer van de bug-fixes, aandacht en het respect (als je code zoveel beter is dan de andere versies van het zelfde idee)

Verwijderd

Misschien is er iets te schrijven dat je ipv een .js bestand een .php / .asp / .cfm / .servsidemeuk gebruikt en in dat bestand eerst kijkt of er vanuit de pagina waarin hij wordt aangeroepen wel een bepaalde var wordt meegestuurd....?

En aan de hand van de aanwezigheid van die var bepalen wat er in je JS-script-file wordt weergegeven.

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 22-05 09:38
Er is wel een manier, maar die werkt alleen met IE en zorgt voor nogal een vertraging en werkt ook niet altijd met Norton.

a) encrypt je JS met de Microsoft Script Encoder
b) controleer op referrer
c) laat je index een cookie generen voor alleen de js file die minder als een minuut geldig is
d) geef HTTP-headers mee aan je script dat ie niet gecached of opgeslagen mag worden
e) laad het niet via src="" maar schrijf een scriptje dat hem via het download-behaviour laadt
f) geef de js-file de extensie ?timestamp mee, en controleer op de server de timestamp
g) verstuur hem via https://

Een berg werk, niet 100% foolproof, maar wel 99,999%

  • Klaus_1250
  • Registratie: December 2000
  • Laatst online: 22-05 09:38
Oh ja, en natuurlijk de gebruikelijke maatregelen, zoals rechter muisknop, contextmenu, etc disablenen...

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 03-02 22:51

Hangloozz

{ @$%&# }

dat obfuscaten kun je eenvoudig door asp of php laten doen door op de plaatsen van functies of variabelen gewoon een random getal/random karakterreeks/timestamp/ te plaatsen.

voorbeeld.
Ik heb onge-obfuscate dit JS:
HTML:
1
2
3
4
5
6
7
8
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    <!--
    var melp = 'Ik ben obfuscated!';
    function blaat(){
        alert(melp)
    }
    //-->
    </SCRIPT>

die kan ik eenvoudig obfuscaten op deze manier:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<? 
function Random_Functie($length) { 
    srand(date("s")); 
    $possible_charactors = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    $string = ""; 
    while(strlen($string)<$length) { 
        $string .= substr($possible_charactors, rand()%(strlen($possible_charactors)),1); 
    } 
    return($string); 
} 

$melp = Random_Functie(5);
$blaat = Random_Functie(8);

echo"<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript'>
    <!--
    var ".$melp." = 'Ik ben obfuscated!';
    function ".$blaat."(){
        alert(".$melp.")
    }
    //-->
    </SCRIPT>";

?> 

voordeel daarbij is dat bij elke aanroep van je script de functies een andere naam hebben B)

[ Voor 0% gewijzigd door Hangloozz op 08-11-2002 14:11 . Reden: typo's ]

www.jurgroessen.nl


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23-05 16:31

Pelle

🚴‍♂️

Denk dat je met een gegenereerd script waarmee je de referer checkt al 99% van de mensen het bos in kunt sturen. Doen ze hier op GoT ook met bijvoorbeeld de stylesheets. Alleen de mensen die weten hoe je een referer kunt faken of hoe je met DOM scripting het stylesheet uit kunt lezen kunnen er nu bij.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23-05 16:31

Pelle

🚴‍♂️

[nohtml]
Hangloozz schreef op 08 november 2002 @ 14:11:
dat obfuscaten kun je eenvoudig door asp of php laten doen door op de plaatsen van functies of variabelen gewoon een random getal/random karakterreeks/timestamp/ te plaatsen.
Hmm.. ik denk dat dit veel makkelijker kan :)
Je maakt een array waar je al je functie- en variabele namen inzet. Vervolgens maak je een md5 hash van elke functie- en variabele naam, in combinatie met een timestamp, en die replace in je javascriptje. Is iets flexibeler, want zo hoef je niet voor elke functie of variabele weer aan je script te gaan klooien.. je hoeft 'm alleen maar even toe te voegen in je array.
Zaak is dan wel om te zorgen dat variabelen en functies niet toevallig hetzelfde heten, maar daar moet je maar zelf voor zorgen ;)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// obfuscator functie
function obfuscate($value) {
    return md5($value . microtime());
}

// functies en variabelen
$functies   = array("blaat", "melp");
$obfuscated = array();

// bereken van elke functie en variabele een (vrijwel) unieke md5 hash 
foreach ($functies as $value) {
    $obfuscated[$value] = obfuscate($value);
}

$javascript = '<script> ... blah blha hier je hele script </script>';

foreach ($obfuscated as $key => $value) {
    $javascript = str_replace($key, $value, $javascript);
}

print $javascript;


Oh ja, newlines eruit slopen is ook wel cool:
PHP:
1
str_replace("\n", "", $javascript);


Dit is overigens niet dé manier om te obfuscaten, als je het goed wilt doen dan maak je een mooie functie die middels een aantal regexen zelf uitzoekt wat functies zijn en wat variabelen zijn, zodat je dat ook nog niet zelf op hoeft te geven.

[ Voor 0% gewijzigd door Pelle op 08-11-2002 14:42 . Reden: typo ]


Verwijderd

Topicstarter
Die referer heb ik geprobeerd in ASP, maar dan kon ik nog gewoon bij de source.
Ja of ik doe het fout
ik heb de volgende code geporbeerd:
code:
1
2
3
4
5
<%
if  (Instr(request.servervariables("http_referer"),"test.test.local") = 0) THEN
    response.end
end if
%>

En hieronder dan mijn javascript.

Maar dan ga ik dus naar de pagina die het script inlaad en dan viewsource en dan c&p het url van de javascript in de adres balk en dan krijg ik nog de javascript code.
Maar als ik een nieuw venster open en dan gelijk het url van de js-file erin typ dan krijg ik hem niet te zien

doe ik iets fout of werkt het niet?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23-05 16:31

Pelle

🚴‍♂️

Zorg ook voor headers die zeggen dat elke keer als je script geladen wordt, hij 'm niet uit z'n cache haalt maar opnieuw van de server trekt.
Pagina: 1