Mar 2, 2007

Javascript - securitate si "frame busting"

Avand in vedere ca js a fost conceput pentru a aduce un plus de functionalitate documentelor, si nu de a pune in pericol securitatea utilizatorului, codul javascript respecta cateva reguli stricte in privinta securitatii.

Teoretic codul javascript este ca un mic program ce se downloadeaza si se executa pe calculatorul utilizatorului, care daca nu ar fi marginit de reguli stricte de securitate ar putea fi periculos ca orice virus.

Principalele limitari de securitate ar fi:
  • Javascript nu poate executa/citi date intre diferite domenii, chiar daca poate face acest lucru intre ferestre diferite ale browserului.
    Singura exceptie este top.location.href care poate fi setat nu citit. Aceasta metoda nu functioneaza pe IE<=5.5. Putem folosi aceasta proprietate pentru a scapa de "frame busting" adica atunci cand frame-ul nostru esta arat in alt site(si nu dorim asta). Pe siteul quirksmode.org este dat ca exemplu un script simplu pentru frame busting:

    var quirksMode = (top == self);
    if (!quirksMode) top.location.href = '/index.html';

  • Javascript nu poate scrie pe hard-diskul utilizatorului date cu exceptia cookie-urilor.
  • Javascript nu poate seta valoarea unui camp input type="file" astfel ca nu poate uploada de exemplu fisere ce contin parole de pe calculatorul utilizatorului.
  • Nu se poate inchide folosind javascript o fereastra deshisa de utilizator (nu exista limitari de acest gen pentru ferestrele deschise cu javascript)
Tip: pentru ferestre din subdomenii diferite ce trebuie sa comunice prin javascript se poate seta document.domain sa fie la fel (de ex www.google.com si mail.google.com).

2 comments:

Andrei said...

"Javascript nu poate scrie pe hard-diskul utilizatorului date cu exceptia cookie-urilor."

dar poate citi?

Ionut Popa said...

Nu, nici nu poate citi. Nu are acces decat la cookie-uri. Si in plus nu poate accesa proprietatile obiectului history; te poate aduce in urma de exemlu cu 2 pagini dar nu stie ce pagini ai vizitat.