Strona zgodnie z Polityką plików cookies wykorzystuje pojedynczy plik cookie do poprawnego działania licznika odwiedzin.
Możesz określić warunki przechowywania lub dostępu do plików cookies w ustawieniach Twojej przeglądarki.

 Centrum Usług Sieciowych 
 
Komputerowy system sterowania urządzeniami
 
 
Ostatnia aktualizacja: 04.08.2015
Wstęp
Sprzęt
Oprogramowanie
Instalacja
AP i DHCP
ProFTPd
Firewall
Apache z PHP
MySQL
Dźwięk
Obsługa LPT
Moduł 230V
LPT przez WWW
Cron
Muzyka  NEW
Budzik WWW
Termometr
Automatyzacja
Kontrola dostępu
Co dalej?
Kontrola dostępu do paneli

W tym miejscu miał powstać przepiękny system logowania użytkowników oparty o bazę danych na serwerze MySQL. Zrobiłem jednak krok wstecz by zastanowić się nad sensem takiego rozwiązania. Po co nam kontrola dostępu na poziomie użytkownika skoro użytkownik będzie tylko jeden? Lepiej zaprojektować system, w którym każdy panel będzie miał własne hasło i tyle!

Koncepcja

Na początku dany plik pyta o hasełko. Po wpisaniu poprawnego hasła generowany jest pliczek cookie o ustalonej nazwie. Istnienie ciasteczka gwarantuje dostęp do właściwej treści, w której znaleźć można link Exit. Po kliknięciu ciasteczko jest usuwane i znów widzimy zapytanie o hasło. Ciasteczko jest ważne przez dłuższy okres czasu dzięki czemu nie trzeba zbyt często wpisywać hasła.

Co jeśli ktoś ukradnie ciacho? Wystarczy je przyporządkować do określonej maszyny na podstawie takich danych jak adres IP, czy informacje o przeglądarce. Nasze ciasteczko będzie zawierało token wygenerowany na podstawie tych informacji. Wówczas wykradzione ciacho można będzie wykorzystać tylko z adresu IP komputera, na którym powstało i tylko przy użyciu tej samej przeglądarki. Zawsze to jakieś zabezpieczenie =).

Czy absolutnie każdy plik powinien pytać o hasło? Nie! Jeden z plików, najlepiej index.php powinien tworzyć i usuwać ciasteczko, a pozostałe tylko sprawdzać jego obecność. Elementem łączącym pliki w grupę będzie nazwa ciacha. Tak powstają dwa typy plików: master i slave.

Szkielet

Struktura pliku master:

hasło
nazwa ciasteczka

sekcja top (dane nagłówkowe, style, itp.)
sekcja bottom (stopka strony)
sekcja bodydenied (okienko wpisywania hasła)
sekcja bodygranted (link wyjścia i treść właściwa)

trochę kodu generującego token
instrukcje warunkowe (co jeśli ciacho jest, co jeśli go nie ma, co jeśli kliknięto enter lub exit)

Struktura pliku slave:

nazwa ciasteczka

sekcja top (dane nagłówkowe, style, itp.)
sekcja bottom (stopka strony)
sekcja bodydenied (napis "Access denied")
sekcja bodygranted (treść właściwa)

trochę kodu generującego token
instrukcje warunkowe (co jeśli ciacho jest, co jeśli go nie ma)

Pliki master.php i slave.php można pobrać tutaj: master.tgz. Po umieszczeniu na serwerze plik master pyta o hasło, a każdy slave z tą samą nazwą ciasteczka wyświetla "Access denied". Jeśli podamy poprawne hasło master stworzy ciacho zawierające token. Od teraz master pokazuje link wyjścia "Exit" i treść właściwą. Każdy slave również pokazuje treść właściwą. Kliknięcie Exit w pliku master usunie ciasteczko i wszystkie pliki powrócą do stanu pierwotnego.

Linijka tworzenia ciacha zawiera "time+60*60*24*30", a linijka usuwania "time-60*60*24*30". Podane liczby to 60 sekund, 60 minut, 24 godziny i 30 dni, co oznacza, że nasze ciasteczko będzie ważne przez miesiąc. Aby zmienić czas musimy we wszystkich wpisach zmienić 60*60*24*30 na wymaganą wartość.

Implementacja

Aby zaimplementować system do istniejących już paneli musimy ostrożnie wklejać zawartości plików jako treść właściwą w sekcji bodygranted uważając, by nazwy używanych zmiennych się nie powtarzały, a sekcja nagłówkowa znalazła się w sekcji top. W ten sposób z pliku index.php robimy master, a z pozostałych plików slave. Każdą kolejną grupę tworzymy nadając nową nazwę dla ciasteczka. Najlepiej dla każdego panelu nadać osobną nazwę by gość, któremu damy dostęp do panelu player nie bawił się światłem =D.

Dynamiczne hasło

Co jeśli ktoś podpatrzy hasło? Zastosujmy hasło automatycznie zmieniające się w zależności od czynników zewnętrznych. Czynnikiem zewnętrznym zmieniającym się regularnie w czasie jest - czas! Widzę to tak:

Nad okienkiem wpisywania hasła pokazuje się aktualny czas, np. "Saturday 04-05-13 02:51".
Zdefiniowane w pliku hasło to "haselko".
Wpisujemy: "haselko45425" i wchodzimy =).

Czwórka to suma cyfr dnia, piątka, miesiąca, kolejna czwórka to suma cyfr roku, dwójka - suma cyfr godziny, a ostatnia piątka to cyfra dziesiątek minut. Najczęściej będzie się zmieniać ostatnia cyfra, bo co 10 minut. Nasze hasło będzie więc co 10 minut inne, a my znając schemat zawsze będziemy je znali. Podobnych systemów można wymyślić naprawdę sporo. Zachęcam do eksperymentowania. Pliki master i slave z zaimplementowanym powyższym systemem można pobrać tutaj: master2.tgz.

Na górę
Autor:

image
int

Kontakt:
facebook.com/int84
int281184@gmail.com
GG 5317390

Licznik:
27000

Valid HTML 4.01 Strict Valid CSS

Strona stworzona przy użyciu PageBreeze, Notepad++, oraz pakietu XAMPP dla sustemu Windows, a także aplikacji KSWEB i DroidEdit Pro dla systemu Android.