Skocz do zawartości
Pecetowicz Forum komputerowe

Bezpieczeństwo w sieci (Studia). Jak zabezpieczyć stronę WWW?


Rekomendowane odpowiedzi

Witam na studiach będę miał bezpieczeństwo w sieci (coś takiego), zastanawiam się jak w sumie zabezpieczyć stronę przed kradzieżą danych. Wpisywałem w Internet różne frazy i głównie wyskakują mi oferty firm i jakieś opisy skutków kradzieży.

Wiem że jednym z sposobów jest w php sprawdzenie danych które wpisywane są przez formularze (np czy spacje kropki i inne znaki nie dozwolone w danym momencie są wpisywane, bo z tego co jedynie zdążyłem się dowiedzieć gdzieś przez okres nauki że przez formularz txt - jak wpiszemy polecenie sql to zostanie wykonane).

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administrator

Witaj, przede wszystkim najważniejszą zasadą jaką trzeba się kierować to - Nigdy nie ufaj użytkownikowi. Zawsze trzeba walidować dane (sprawdzać ich poprawność oraz typ (np.: liczba, tekst, data etc)).

Druga sprawa to dostęp do witryny od strony panelu - tutaj stosowałbym mocne hasła oraz stosował regularną kopię zapasową.

Kolejna rzecz to certyfikat SSL - tutaj można skorzystać z Let's Encrypta do prostych rzeczy ale jeśli chodzi o dane userów to pasowałoby tu już coś wykupić.

Przy stosowaniu jakichś CMSów - należałoby śledzić aktualności i posiadać na serwerze najnowszą wersję X skryptu i w przypadku wtyczek stosować ich jak najmniej a jak już to na 1000% sprawdzonych.

 

Gdybym miał podsumować całość(opierając się o kilka źródeł z Google) to najważniejszymi rzeczami na jakie trzeba zwrócić uwagę to:

- XSS -> https://pl.wikipedia.org/wiki/Cross-site_scripting

- CSRF -> https://pl.wikipedia.org/wiki/Cross-site_request_forgery

- Przechwytywanie sesji -> https://pl.wikipedia.org/wiki/Session_hijacking

- Unikanie SQL Injection -> https://pl.wikipedia.org/wiki/SQL_injection

- Używanie certyfikatów SSL

- Blokowanie dostępu z zewnątrz do plików

(Źródło/a: https://geekflare.com/php-site-security-tips/, https://blog.sagipl.com/protect-php-websites/, https://www.php.net/manual/en/security.php, https://www.cmarix.com/blog/how-to-secure-your-php-website-from-being-hacked/)

 

Jeśli o jakieś źródła wiedzy, o które można się oprzeć to np.: książka od sekuraka (https://sklep.sekurak.pl/product/view?id=1). Posiadam tę książkę - gruba jak cholera i ciężko mi się do niej zabrać ale patrząc po tym co jest w niej zawarte myślę, że odpowiedziała by ona na Twoje pytania - ewentualnie można przyjanuszyć i na podstawie spisu treści szukać odpowiedzi w Internecie (zapewne po angielsku) i na tej podstawie się doszkolić.

  • Lubię to! 3
  • Super 4
  • Wow 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Administrator
Napisano (edytowane)

Jeśli chodzi o nazewnictwo, czy to plików, zmiennych czy nazw baz, tabel lub kolumn to ja trzymam się tylko angielskiego nazewnictwa i to w każdym możliwym języku/technologii.

 

Jeśli chodzi o zabezpieczenie no to co w sumie już napisałem:

- konfiguracji dostępu do bazy tak aby plik konfiguracyjny nie był dostępny z zewnątrz

- zabezpieczenie zapytań np.: służących wyszukiwaniu w bazie czy to wprowadzających dane do bazy czy ich edycja (zabezpieczenie przed SQL Injection)

Edytowane przez Mativve
  • Lubię to! 4
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert

Prześledź sobie temat Albicla (Niebezpiecznik, Sekurak, Spider's Web, Zaufana Trzecia Strona) i będziesz mieć listę tego czego nie robić by 'zabezpieczyć' 😉 

A tak poza tym, to jeżeli nie stawiasz serwerów od zera, samemu, wg gotowych tutoriali na YT 🤣, to wystarczy stosować silne hasła do serwisów, które oferuje hosting.

PS. I nie instaluj też oprogramowania z niewiadomych źródeł / scrackowanych.

Edytowane przez -n3veR
  • Lubię to! 4
  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach
17 godzin temu, SeNioR napisał:

- Zabezpieczenie dostępu do katalogu administracyjnego (np. przez htpasswd)

Hmm czyli wnioskuje jeżeli mam funkcje admina w jednym panelu wraz z użytkownikiem - za pomocą funkcji if  (obrazek poglądowy w załączniku) to domyślam się że jest to złe działanie

 

 

logika.png

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
Napisano (edytowane)

No, nie tak się robi Roles w systemie... 😕

A Sebie raczej chodziło o 'schowanie' panelu admina. Dostęp do niego będą miały jedynie osoby znające hasło.
Trochę więcej na ten temat w tym wątku:

 

Edytowane przez -n3veR
  • Lubię to! 3
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zrozumiałem to, bardziej chodzi mi o praktykę, czyli powinno stworzyć się osobna tabele w bazie dla admina i z tymi danymi tworzyć katalog admina? 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok, więc ja bym podszedł do tematu tak:
- najpierw zaplanuj sobie jak powinna wyglądać twoja baza danych, jakich tabel i kolumn potrzebujesz, następnie musisz zdefiniować im odpowiednie typy i najlepiej ustawić jakąś długość maksymalną dla wpisywanych znaków,
- czy będziesz miał tabelę admina, czy usera z flagą admina nie ma znaczenia, trzeba dobrze zaszyfrować hasło w bazie,
- kolejną ważną rzeczą jest utworzenie na serwerze użytkownika tylko z dostępem do tej jednej bazy i ustawienie, że tylko użytkownik na tym konkretnym komputerze ma dostęp do bazy,

- dane dostępowe do bazy najlepiej przechowywać w jakimś .env czy czym podobnym, dostępnym tylko z poziomu serwera

Odnośnik do odpowiedzi
Udostępnij na innych stronach
On 2/4/2021 at 1:40 AM, SeNioR said:

Zastosowanie bezpiecznych nagłówków (Security headers) takich jak:

  • X-XSS-Protection
  • X-Frame-Options
  • Content-Security-Policy
  • Permissions-Policy
  • X-Content-Type-Options

- Wyłączenie nagłówka (X-Powered-By oraz ServerSignature

 

Hej @SeNioR mógłbyś naprowadzić mnie bardziej na zabezpieczenie header 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
8 godzin temu, Grzegorz napisał:

Zrozumiałem to, bardziej chodzi mi o praktykę, czyli powinno stworzyć się osobna tabele w bazie dla admina i z tymi danymi tworzyć katalog admina? 

Nie. User, to User. Jedyna różnica między tymi dwoma bytami, to Role (rola, uprawnienia, zwał jak zwał). To nie ma nic wspólnego z tym pomysłem od Seby.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
Napisano (edytowane)
W dniu 5.02.2021 o 07:00, Grzegorz napisał:

Zrozumiałem to, bardziej chodzi mi o praktykę, czyli powinno stworzyć się osobna tabele w bazie dla admina i z tymi danymi tworzyć katalog admina? 

Baza danych służy wyłącznie do przechowywania danych, nic więcej. To czy użytkownik ma mieć dostęp do jakiegoś zasobu aplikacji, to w jaki sposób definiujesz rolę użytkownika (czy to z użyciem sesji, czy zakodowanej roli w JWT, czy oddzielnemu polu w ciasteczku, czy może bardziej po stronie klienta z użyciem LocalStorage lub SessionStorage), to w jaki sposób dbasz o bezpieczeństwo routów (po FE i BE) zależy wyłącznie od samej już aplikacji.  

Edytowane przez Dazai
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...