• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Strona internetowa z baza danych i dwoma typami użytkowników, ZBYT SKOMPLIKOWANE?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
447 wizyt
pytanie zadane 12 kwietnia 2020 w Nasze projekty przez klimek_91 Nowicjusz (140 p.)
Witam, wpadłem na pomysł strony internetowej/start upu oraz chciałbym go wam przedstawić, na zmienionym przykładzie aby nie zdradzać swojego pomysłu ale koncept podobny. Będę bardzo wdzięczny za pomoc w przedstawieniu jakie większe problemy mógłbym napotkać podczas robienia tego projektu.

Strona dla rodzin, gdzie:

1) Będą występowały dwa rodzaje użytkowników (przy rejestracji i później przy logowaniu wybór typu użytkownika?):
- głowa rodziny, mająca dostęp do listy oraz bazy danych członków swojej rodziny wraz z rożnymi danymi/informacjami na ich temat, ma możliwość edycji i dodawania różnych rzeczy do tych danych
- członek rodziny, mający dostęp tylko do swoich danych, głównie możliwość podglądu, edycja jedynie ograniczonej części swoich danych (głowa rodziny może edytować inne rzeczy dot. członka a członek rodziny inne dane)

2) Głowa rodziny będzie mogła wybrać 'przedmiot' dla poszczególnego członka swojej rodziny z dużej bazy danych + własny komentarz. Jeśli 'przedmiotu' nie będzie w owej bazie danych, głowa rodziny będzie mogła zaproponować dodanie ( do akceptacji przeze mnie lub przez admina) nowego 'przedmiotu'.

3) Obydwa typy użytkowników będą mieli podgląd (bez możliwości edycji) jaki 'przedmiot' był wybrany w przeszłości oraz jaki były ich poszczególne dane w przeszłości, np tydzień temu, miesiąc, pól roku temu. Członek rodziny tylko u siebie a głowa rodziny jak to wyglądało u każdego ze swoich członków. Na teraźniejszy stan też mają podgląd przy czym głowa rodziny może edytować jaki jest obecny stan.

4) Płatność ala abonament od głowy rodziny, w zależności od ilości członków rodziny, możliwość elastycznego dodawania oraz odejmowania ilości członków, również podział na 2 konta mniej i bardziej rozbudowane (więcej lub mniej typów danych) z różną ceną.

Moje umiejętności programowania są jeszcze dobre parę miesięcy od napisania tej strony, jestem samoukiem, posiadam umiejętniej Pythona wraz z analiza danym na poziomie średnio-zaawansowanym ale nie typowo pod strony internetowe. Umiem HTML i CSS na poziomie średnio-zaawansowanym, jestem obecnie podczas intensywnej nauki Front-Endu (JavaScript) oraz później nauki łącznia tego z Back-Endem (przez Python? Django? SQL? jakieś pomysły jak to najlepiej rozwiązać?).
Zastanawia mnie jak to jest od strony zabezpieczeń? od strony RODO? oraz czy potrzebowałbym do tego jakiś odpowiedni serwer (być może w przyszłości będzie to bardzo duża baza danych z dużą ilością rodzin). Czy te i bardziej specjalistyczne rzeczy można komuś zlecić?

Wydaje mi się że jest to dość ambitny projekt i przez braki wiedzy możliwie że nie jestem do końca świadomy jak wiele problemów jeszcze przede mną stoi, więc bardzo prosiłbym o jakieś schematy jak można poradzić sobie chociaż z którąś z tych rzeczy. Przez to że dość mi zależy na czasie jestem w stanie zlecić cześć pracy komuś innemu. Będę bardzo wdzięczny za każdą wskazówkę.

1 odpowiedź

+1 głos
odpowiedź 15 kwietnia 2020 przez Bartek2210 Obywatel (1,310 p.)
Stworzenie uprawnień, co kto może przeglądać, czy edytować to nie jest większy problem znając podstawy jakiegoś języka backendowego. Osobiście polecam PHP do tego. Za jego pomocą bez problemu możesz przeprowadzić walidacje po stronie serwera, połączyć się z bazą danych, czy powiązać to z front endem. Co do zabezpieczeń to jest to istotna sprawa, a sposobów na ich ominięcie jest pełno. Ogólnie nie możesz ufać użytkownikom i wszystkie wprowadzane dane musisz walidować. Pamiętaj też, że js da się wyłączyć, a ,,zabezpieczenia" np. pól w formularzu w HTML (gdzie wydaje się, że użytkownik może wpisać np. tylko liczbę, czy 20 znaków) jest w stanie ominąć nawet amator, więc najlepiej żeby wszystkie walidacje były równocześnie zrobione po stronie serwera (zwłaszcza jak chcesz coś wysłanego przez użytkownika wprowadzić do bazy danych. Tu najbardziej musisz uważać bo inaczej ci zrobią SQL Injection).

Ogólnie ja bym to zrobił w taki sposób, że w bazie danych tworzysz tabelę z danymi logowania danego użytkownika wraz z jego uprawnieniami, a potem w innych tabelach to o czym pisałeś, komentarze, czy przedmioty z odpowiednimi relacjami pomiędzy tabelami.

Co do serwera to tworzyłem podobny serwis (rozbudowany system uprawnień, co kto może robić) i na moje potrzeby wystarcza pierwszy lepszy hosting, ale to zależy od tego co konkretnie potrzebujesz, ilu będziesz miał użytkowników itp.
komentarz 15 kwietnia 2020 przez klimek_91 Nowicjusz (140 p.)
Dzięki za odpowiedź, co nieco na pewno mi pomogła :)

Skoro umiem Pythona myślisz ze warto mimo wszystko próbować to zrobić w pythonie czy spróbować nauczyć się pod tym kontem PHP jeśli mówisz ze on jest odpowiedniejszy do tego, pytanie czy dużo bardziej odpowiedni czy z już nabytymi umiejętnościami Pythona będę w stanie przez to przebrnąć.
Wydaje mi się ze w DJANGO jest możliwość dość łatwego poradzenia sobie z typami użytkowników i ich właściwościami.

Dodatkowo co do zabezpieczeń chodziło mi bardziej o stricte anty-hakerskie zabiegi, przed wyciekiem danych itp, z racji tego że będą tam dane typu imię i nazwisko które z tego co mi się wydaje podlegają pod RODO, wiec strona powinna zawierać odpowiedni certyfikat/zezwolenie. Czy takie rzeczy typowo od zabezpieczeń można komuś zlecić? Czy np. to zależy też od dostawy hostingu/serwera?

Odnośnie serwera jeszcze muszę sprecyzować że łącznie z przedmiotami, będą mogły się tam znajdować rożne zdjęcia, w tym zapis historii również z jakimiś dodatkowymi plikami. Zastanawiam się czy nie lepiej od razu na jakimś dedykowanym serwerze umieszczać, czy zacząć od hostingu a później ewentualnie czy byłaby możliwość dość bezproblemowo przenieść to na serwer jeśli ilość użytkowników i zasobów będzie się zwiększać?
komentarz 15 kwietnia 2020 przez Bartek2210 Obywatel (1,310 p.)
edycja 15 kwietnia 2020 przez Bartek2210

PHP jest ściśle stworzony pod strony www, a python z tego co wiem ma też inne zastosowania i wydaje mi się, że stworzenie w nim czegoś do stron www będzie bardziej skomplikowane + prawdopodobnie mniej poradników niż w PHP, ale język ten znam tylko z nazwy. Nigdy w nim nic nie robiłem i nie znam jego możliwości.

Praktycznie każdy hosting oferuje PHP, a w pythona niekoniecznie lub może być to droższe (przynajmniej tak było jakiś czas temu). Nie wiem jaki jest twój obecny stan wiedzy w pythonie, ale większość języków programowania działa na podobnej zasadzie i przystosowanie się do innego nie powinno stanowić większego problemu, co nie znaczy że python to złe rozwiązanie.

Walidacja danych od użytkowników to podstawowa rzecz, którą powinieneś robić jak obawiasz się o wyciek danych, bo przez ich brak najłatwiej coś zdobyć.

Przykład: Masz pole gdzie użytkownik wpisuje nazwę swojego zamówienia, a strona wyświetla ci wszelkie szczegóły na jego temat. Wykorzystujesz poniższe zapytanie do pobrania danych z bazy

SELECT * FROM zamowienia WHERE nazwa_zamowienia = 'to_miejsce_uzpelnia_uzytkownik' AND user = 'user'

Użytkownik wypełnia pole i wpisana przez niego fraza bez walidacji trafia od razu do zapytania. Wystarczy, że wpisze tam zamiast zwykłej nazwy np. coś takiego:

bylejakitekst' OR 1=1--

i ma już wszystkie dane każdego zamówienia z bazy danych, a to tylko prosty przykład. Mogą być o wiele gorsze.

Co do innych zabezpieczeń anty-hakerskich to zależnie od tego co robisz musisz poszukać jakie z tego mogą wynikać zagrożenia i jak im zapobiec. Pewności, że nic nie wycieknie nigdy nie masz bo zawsze może być błąd nawet w samym języku, który jeszcze jest nieznany a ktoś go do czegoś wykorzysta. Hosting powinien oferować ci zabezpieczenia przed atakami np. DDOS, ale to są raczej zabezpieczenia związane z kwestią stabilności serwera. Na certyfikatach i RODO się nie znam więc nie pomogę. Na pewno musisz na stronie mieć SSL.

Co do wyboru serwera to jak pisałem wcześniej zależy to od wielu czynników. Zdjęcia i dodatkowe pliki nie powinny stanowić problemu, ale wszystko zależy od ilości. Na hostingu, z którego korzystam mam 20 GB pojemności. Jest to dosyć mało, ale to tani hosting. Spokojnie można znaleźć oferty z większą pojemnością. Istotny jest też ram czy inne ograniczenia, które są na hostingach. Po przekroczeniu limitu wykorzystania pamięci na niektórych hostingach użytkownicy mogą zobaczyć zamiast strony błąd 500, a niektóre skrypt po pewnym czasie działania po prostu się wyłączą. Na dedykowanym serwerze będzie mniej limitów ale więcej konfiguracji i niezbędnych zabezpieczeń. Przenoszenie danych między serwerami zwykle nie stanowi większych problemów.

Podobne pytania

0 głosów
3 odpowiedzi 328 wizyt
0 głosów
0 odpowiedzi 145 wizyt
pytanie zadane 22 listopada 2019 w HTML i CSS przez xlandia1 Nowicjusz (180 p.)

93,187 zapytań

142,201 odpowiedzi

322,012 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2006p. - Michal Drewniak
  7. 2005p. - Łukasz Siedlecki
  8. 1964p. - CC PL
  9. 1946p. - Adrian Wieprzkowicz
  10. 1901p. - Mikbac
  11. 1744p. - rafalszastok
  12. 1734p. - Anonim 3619784
  13. 1586p. - Dawid128
  14. 1520p. - Marcin Putra
  15. 1480p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...