Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Portal oparty na javascript
Forum PHP.pl > Forum > Po stronie przeglądarki
qooxdoo
Hej

Czy portal oparty na javascript jest bezpieczny? Mam na myśli:
  1. function page(url, title){
  2. var allowed = Array("omnie.html", "main.html", "komentarze.php", "flvplayer.html");
  3. if(in_array(url, allowed)==1){
  4. document.getElementById("cnt").src = "pages/"+url;
  5. document.title=title;
  6. }
  7. else
  8. alert("Dostęp zabroniony");
  9. }

Polega to na tym, że klikając w menu nie ładuje się cała strona od nowa, tylko element iframe ("cnt") zmienia swój atrybut src (na plik podany w funkcji)

W praktyce wygląda to tak:
  1. <a href="javascript:page('omnie.html', 'Inni o mnie')">Inni o mnie</a>


Jedynym zabezpieczeniem jest tablica, w której znajdują się pliki, które przglądarka może ładować do iframe.

I tu moje pytanie, czy to oby bezpieczne? Bo przecierz można wpiszać w pasku adresu java script:page('../secret.txt', 'a'); niby wyskoczy błąd, ale to się dzieje po stronie przeglądarki. Hackerem nie jestem, więc wydaje mi się, że nie da sie tego obejść. Proszę o rady.

PS. mógłbym zrobić to w php, ale wtedy strona by się przeładowywała za każdym kliknięciem linka w menu. A ja musze temu zapobiec (dość obszerna statyczna część strony)
RaNdaLLHD
A próbowałeś do tego celu wykorzystać Ajax?
yaro
Raczej jest to bezpieczne, tyle tylko że pokazujesz wszystkie podstrony w tablicy. Z resztą i tak sam byłoby z linkami. Więc sądzę że to rozwiązanie jest bezpieczne. Musisz się zabezpieczyć po stronie serwera.
Nawet to sprawdzanie nie jest potrzebne, bo lepiej zabezpieczysz sie po stronie serwera.
eai
Wystarczy wyłączyć JS, zresztą do FF jest dużo wtyczek które pomagają omijać takiego typu rzeczy... dlaczego?questionmark.gif Bo to sie dzieje po stronie przeglądarki, więc nie jest bezpieczne. Zawsze zabezpieczaj sie po stronie serwera!
qqrq
Ktoś tu pomyślał i źle wymyślił...
Twoje rozwiązanie jest o tyle bez sensu, że iframe-y (czy też ogólnie ramki) mają tą własność, że wczytują się do nich dane bez przeładowania strony. Musisz tylko w odnośniku powiedzieć do której ramki strona o podanym adresie ma się wczytać. Nie pamiętam dokładnie (ramek raczej nie używam), ale chyba trzeba ramce nadać imię (name), a w odnośniku ustawić cel (target) na imię naszej ramki. Czyli:

  1. <iframe src="costam.html" name="ramka"></iframe>
  2. <a href="strona.html" target="ramka">Klik!</a>


i już! Twój sposób jest dobry, ale niepotrzebny - to jak z czołgiem na muchy startować. Zresztą JS można wyłączyć i wtedy strona nie będzie działać... A jeszcze ktoś ci coś brzydkiego na serwer wrzuci (jakoś by się chyba dało - dla chcącego...).
qooxdoo
Sam już nie wiem, to można to ominąć?

Cytat(qqrq @ 28.09.2007, 02:21:51 ) *
Musisz tylko w odnośniku powiedzieć do której ramki strona o podanym adresie ma się wczytać.

ale w mojej funkcji używam jeszcze argumentu Title, bo w końcu zmieniając zawartość ramki na belce pojawia się napis 'Strona główna', lub 'O mnie' (page('main.html', 'Strona Główna')winksmiley.jpg

Sam już nie wiem
Wykladowca
Z tak zwanym palcem w... nosie. Twoje zabezpieczenie nic nie daje przeciwko FF z kilkoma wtyczkami czy "gołej" Operze. Jak chcesz ukryć zawartośc podstron przed wszystkimi - po prostu nie podawaj nigdzie linków. Ciężko trafić na daną stronę wpisując na oślep adres. Jeżeli chcesz zabezpieczyć przed niektórymi użytkownikami, skorzystaj z php.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.