Javascript, a bezpieczeństwo kodu.

0

Witam

Ostatnio wpadłem na pomysł napisania całej strony wyłącznie w języku JavaScript, dość dobra idea, ponieważ system płatności pozwolił mi na to w 100%. Ogólnie nie lubię mieszać dwóch języków, a chciałbym zrobić stronę interaktywną na co pozwala mi jQuery.

Cały problem leży w tym, że jak wiecie wszystkie kody wysyłane są do klienta - i tam przeglądarka je odpowiednio interpretuję. I tutaj leży moje pytanie? Co z tym zrobić, aby użytkownicy (klienci) nie mogli ich używać? Ogólnie nie ma sposobu na ukrycie tego kodu - no bo po prostu się nie da (lub ja go nie znam/znalazłem). Czy mogę zastrzec sobie prawa do tego kodu? Zna ktoś odpowiednie rozwiązanie, które pomoże mi rozwiązać mój problem.

*Dziękuje z góry, *
Alehopper

0

Napisanie strony całej w JS to bardzo zły pomysł.
Należy wiedzieć, że nie każdy ma przeglądarkę, która go interpretuje, nie każdy ma wystarczająco szybki komputer, itd.
A co do kodu, to można go "zaciemnić" np.poprzez http://www.jasob.com/
Wg.twórcy, kod:

function CalculateSalary(aEmployees)
{
   var nEmpIndex = 0;
   while (nEmpIndex < aEmployees.length)
   {
      var oEmployee = aEmployees[nEmpIndex];
      oEmployee.fSalary = CalculateBaseSalary(oEmployee.nType, 
                                              oEmployee.nWorkingHours);
      if (oEmployee.bBonusAllowed == true)
      {
         oEmployee.fBonus = CalculateBonusSalary(oEmployee.nType, 
                                                 oEmployee.nWorkingHours, 
                                                 oEmployee.fSalary); 
      }
      else
      {
         oEmployee.fBonus = 0;
      }
      oEmployee.sSalaryColor = GetSalaryColor(oEmployee.fSalary + 
                                              oEmployee.fBonus);
      nEmpIndex++;
   }
}

Zamienia się na:

function c(g){var m=0;while(m<g.length){var r=g[m];r.l=d(r.n,r.o);if(r.j==true){
r.k=e(r.n,r.o,r.l);}else{r.k=0;}r.t=f(r.l+r.k);m++;}}

(nie testowane - ufam danym na stronie ;))
A należy pamiętać, że to ciągle ten sam kod.

0

A istnieje inny sposób napisania strony w jednym języku (chodzi mi tutaj o stronę interaktywną). Bo przykładowa strona to najczęściej domyślnie HTML, później PHP + JavaScript. Nie ma sposobu napisania strony wyłącznie w jednym języku, tak aby była ona aktywna (animowana, itd) ?

0

Możesz napisać wszystko w javascript: node.js.

0

W praktyce nie ma sposobu, by napisać normalną, interaktywną stronę w jednym języku. I dobrze, bo jakby tak się zastanowić, to pomysł napisania witryny w jednym języku nie jest wcale taki mądry.

HTML czy CSS to języki dziedzinowe. Nadają się do opisu -- odpowiednio -- struktury i wyglądu witryny lepiej niż np. JavaScript czy PHP.

Z drugiej strony HTML to język znaczników, a CSS to język arkuszy stylów. To nie są "języki programowania". Do opisu zachowania strony nadają się raczej słabo (poza pewnymi wyjątkami) lub wręcz w ogóle. Z kolei JS i PHP sprawdzają się w tym nieźle.

Jak widzisz, opłaca się korzystać z wielu języków, bo każdy jest lepszy w czymś innym, a potrzebujesz wszystkich tych rzeczy by stworzyć normalną, interaktywną witrynę.

Przecież nie pytasz się, czy da się naprawić dowolną rzecz w samochodzie za pomocą jednego narzędzia, np. śrubokrętu, prawda? Bo to by było głupie. Oczywiste jest, że jedną rzecz lepiej zrobi śrubokręt, a inną młotek -- mimo że śrubokrętem też niby można walić w gwóźdź czy blachę. Ale już lakieru gwoździem w zasadzie nie sposób nanieść, co nie?

Co do samego JS-a, to nie, nie da się napisać w JS-ie kodu po stronie klienta w "bezpieczny" sposób, tak żeby nikt nie mógł podejrzeć i zrozumieć jego działania. Obfuskacja utrudnia zrozumienie czy "złamanie" kodu, ale to tylko pewne utrudnienie, którego skuteczność nie zbliża się nawet do 100%. Kod, który trafia do przeglądarki, może równie dobrze zostać odczytany przez człowieka. Zdeterminowany hacker/cracker jest w stanie ogarnąć nawet stosunkowo skomplikowany kod, potraktowany obfuscatorem. Ja kiedyś musiałem ogarnąć kod czegoś w rodzaju JS-owego "wirusa", który atakował strony. Kod był potraktowany obfuscatorem, podwójnie zabezpieczony jakimś niby szyfrowaniem, całość wykonywana była przez eval(). Nie miałem problemów ze złamaniem tych pożal się Boże utrudnień, a byłem wtedy studencikiem i to bynajmniej nie ostatniego roku. Żadnym też geniuszem.

Ale to, że kodu nie da się w sensie stricte zabezpieczyć, już wiedziałeś.

Owszem, da się go zabezpieczyć prawnie, wydając na odpowiedniej licencji. Podobne licencje czy podobne prawo chroni np. utwory muzyczne czy filmy ;).

BTW: w node.js nie napisze się całej, normalnej stronki. Tak naprawdę, użyje się -- pośrednio -- HTML-a. Choćby w postaci wywołań DOM. Konkretnie, będą to wywołania interfejsu, który nie na darmo nazywa się HTML DOM. Nawet jakbyśmy użyli canvas by narysować całą stronę, co w 99.9999% przypadków byłoby idiotyczne, to canvas też jest częścią HTML-a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1