Hasło na dany element w HTML


(bogacz225) #1

Witam, zapewne idzie ustawić hasło na dany element w HTML, np. zdjęcie, czy odnośnik do innej strony. Chodzi o to, aby dopiero po wpisaniu poprawnego hasła przenosiło pod dany adres. Chciałbym także, aby hasło było zapamiętane, ale do tego wystarczą cookies, prawda? Nie wiem tylko, gdzie tę hasło przechowywać. Obejdzie się bez bazy?


(Fizyda) #2

Raczej nie.

 

Gdzieś już na forum pisałem na podobny temat, poszukaj, ja też spróbuję, jak znajdę edytuję posta i dam linka.

 

EDIT:

Znalazłem, ale problem był trochę inny, mimo wszystko zapoznaj się z tematem:

i podaj więcej szczegółów co do tego jak chcesz żeby to działało, czy ma być jedno hasło dla wszystkich czy może każdy ma mieć inne, jak to sobie wyobrażasz.


(bogacz225) #3

Hasło jedne dla wszystkich ukrytych elementów. Wiem, że to powinno być od innej strony zaczęte. Najlepiej konto administratora, który ma dostęp do wszystkiego, ale to ma być zwykła amatorszczyzna. Zwykłe ukrycie elementu.


(Fizyda) #4

Pytanie jak bardzo chcesz to zabezpieczyć, jak tylko na tyle, żeby przeciętny użytkownik nie poznał linka przed podaniem hasła to może wystarczy szyfrowanie base64 dla a href, plus odpowiednia classa css po której będziesz szukał linków w skrypcie js. JS blokowałby przejście do nowej strony po kliknięciu w link wyświetlał okienko do podania hasła sprawdzał hasło i jeśli jest poprawne pobierał href z elementu i go deszyfrował, a potem przekierował użytkownika na odszyfrowany url.

Sprawdzenie hasła może wyglądać tak że za hardkodujesz go w skrypcie szyfrując go, choćby base64 ale musisz mieć świadomość że będzie się dało hasło odczytać - linki w sumie też bez podania hasła, ale to jednak zawsze jest poznanie jakiegoś hasła które może być wykorzystane w kilku miejscach. Ewentualnie zamiast hardkodować hasło można by sprawdzić je przy pomocy ajaxa na serwerze i dopiero jak serwer da odpowiedź że hasło jest poprawne dopiero odszyfrowujesz link i przekierowujesz użytkownika. W drugim rozwiązaniu po stronie serwera może być zahardcodowane hasło, może nie jest to security pełną gębą, ale dużo bezpieczniejsze niż hardcodowanie go w skrypcie JS.

 

PS. Hasło nie powinno być zapamiętane w cookisach, lepiej zapamiętać czy użytkownik podał poprawne hasło czy nie. Jeśli tak to skryptem odszyfrować wszystkie elementy po załadowaniu strony.


(bogacz225) #5

Tak, masz racje co do zapamiętywania. Zrobię to z AJAXem. Dzięki.


(bogacz225) #6

Chciałem się za to zabrać, ale uświadomiłem sobie jedną rzecz. Przecież nawet jak użyję ajaxa, to nadal będzie można podejrzeć je (zakodowane jak mniemam) na serwerze. Ścieżka będzie podana w .open(get), prawda?

Założenie jest takie. Twoja druga propozycja:
Zakodowane hasło trzymać na serwerze, a rozkodować je dopiero przy próbie podania hasła?


(Fizyda) #7

Nie, hasło w jakiej formie chcesz trzymasz na serwerze, ajaxem odpytujesz jakiś tam url wysyłając np postem podane przez użytkownika hasło, skrypt po stronie serwera sprawdza otrzymane hasło z tym które jest mu znane i daje odpowiedź tak/nie w zależności czy podane hasło jest tym co jest ustawione.
Hasło można odgadnąć metodą brute force, dlatego warto mieć np skonfigurowany securitymod dla apache lub wprowadzić jakieś dodatkowe ograniczenia czasowe i zmieniać hasło co jakiś czas.
Ewentualnie można wprowadzić indywidualne hasło dla każdego użytkownika lub jakieś tokeny wysyłane drogą mailową. Aby uzyskać token np. musiałbyś posiadać email z danej listy. W pierwszym korku podajesz email w drugim kod który dostałeś na maila. Weryfikacja w pierwszym kroku to czy adres email jest w bazie i ma dostęp do strony, jeśli tak wysyłasz mailem jakiś token, w drugim sprawdzasz czy token jest poprawny. Dodając token sesji w obu punktach masz większą pewność, że to ten sam komputer.

Możliwości jest bardzo dużo, to na co się zdecydować zależ od tego jaki poziom bezpieczeństwa Cię interesuje. Jeśli zależy Ci na dużym bezpieczeństwie i nie posiadasz w tym zakresie odpowiedniej wiedzy proponowałbym zlecenie komuś napisania takiego skryptu.


(slepcu) #8

Może warto zainwestować w SSL’a, wtedy podsłuchanie wymiany informacji pomiędzy przeglądarką a serwerem będzie dużo trudniejsze.


(Fizyda) #9

SSL służy do czegoś innego niż było pytanie w temacie. SSL byłby rozwiązaniem gdybyśmy chcieli zabezpieczyć przesyłanie hasła do serwera tak by po drodze nie dało się go odczytać.