Skocz do zawartości

[ajax + php] dodawanie nowego artykulu


HERO

Rekomendowane odpowiedzi

Hejka, nie tyle pytanie o kod co o komentarz do pomyslu.

jest sobie strona na ktorej mozna dodawac artykuly. jezeli sie nie zaloguje to tworzy nowego usera i artykul jest do niego przypisany. jezeli user jest zalogowany to bierze do artykulu user_id z sesji i

jest jeszcze trzeci warunek.

klient wymyslil, ze jak user istnieje w bazie to bez przeladowania strony wyswietlic komunikat, ze taki user dla podanego @ istnieje i ze moze sie zalogowac i dodac artykul lub zalozyc artykul a artykul zostanie przypisane do jego konta (chodzi o skrocenie ewentualnego problemu z przypominaniem hasla). 

wiec na stronie zrobilem ajaxem selecta do users, jak znajduje emaila to wysylam z powrotem jego ID, wyswietlam komunikat ze artykul zostanie przypisany do Twojego konta i nie musi sie logowac i wpisuje w input hidden user_id tak zeby po przeslaniu formularza artykul zostal utworzony z danym user_id. jeszcze po przeslaniu formularza sprawdzam drugi raz czy user_id istnieje w bazie gdyby tak ktos na froncie cos majstrowal

no i moje pytanie. czy mozna to napisac bezpieczniej? bo lepiej to na bank 

 

Opiekuj.pl - Testy dla opiekunek do dzieci | Dentysta Mokotów który daje powody do uśmiechu | Systemy szklane - Oferujemy szeroki wybór elementów szklanych dostępnych w różnych rozmiarach

 

Odnośnik do komentarza
Udostępnij na innych stronach

1. Jeśli twój e-mail to admin@domena.pl i ja wpisze taki e-mail to artykuł zostanie przypisany do ciebie, tak? Mimo, ze nie jestes jego autorem? Ma to sens?

2. Nie przesyłaj ID jako hidden input bo ktoś może podać ID które istnieje ale nie należy do niego - takie rzeczy robisz po stronie backendu

Potrzebujesz dedykowanej aplikacji internetowej? Napisz :) (PHP, MariaDB/MySQL, MongoDB, JavaScript)

Mój prywatny monitor backlinków

Najlepsze serwery Minecraft. A to kolejna lista zawierająca serwery Minecraft

Odnośnik do komentarza
Udostępnij na innych stronach

3 minuty temu, HERO napisał:

Twojego konta i nie musi sie logowac i wpisuje w input hidden user_id t

Wszystko co jest w dostępne w kodzie strony w polach formularza w sposób jawny można podmienić, wiec nie jest to właściwe rozważalnia na uwierzytelnienie użytkownika. Jeśli już stosuj jakieś szyfrowanie danych lub przechowuj dane z sesji.

 

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli hasła to problem to zrób logowanie na zasadzie drugiego składnika dwuskładnikowego uwierzytelniania. Czyli po wprowadzeniu maila który istnieje w bazie wysyłany jest mail/sms z unikalnym kluczem (oczywiście zapisany do bazy danych jednocześnie) w postaci linka. Dopiero po kliknięciu w link user zostaje uwierzytelniony lub artykuł dodany przez niezalogowanego zostaje faktycznie przypisany do konta (jeśli nie kliknie w wymaganym czasie to art jest usuwany).

Edytowane przez okazwłoka
Odnośnik do komentarza
Udostępnij na innych stronach

Godzinę temu, dudekm napisał:

1. Jeśli twój e-mail to admin@domena.pl i ja wpisze taki e-mail to artykuł zostanie przypisany do ciebie, tak? Mimo, ze nie jestes jego autorem? Ma to sens?

2. Nie przesyłaj ID jako hidden input bo ktoś może podać ID które istnieje ale nie należy do niego - takie rzeczy robisz po stronie backendu

 

@Mion dzieki bo podsunales mi pomysl. sprawdze ajaxem czy jest user jezeli jest to do inputa hiddena podstawie 1 a potem po stronie backendu wezme z posta email i na nowo sprawdze czyli taka podwojna walidacja ale nie bede przesylal user_id pomiedzy stronami 

 

 

@okazwłoka klient najchetniej zrezygnowalby calkiem z logowania... i mial tabele users... 

 

dzieki jeszcze raz za odpowiedzi

Opiekuj.pl - Testy dla opiekunek do dzieci | Dentysta Mokotów który daje powody do uśmiechu | Systemy szklane - Oferujemy szeroki wybór elementów szklanych dostępnych w różnych rozmiarach

 

Odnośnik do komentarza
Udostępnij na innych stronach

32 minuty temu, okazwłoka napisał:

Jeśli hasła to problem to zrób logowanie na zasadzie drugiego składnika dwuskładnikowego uwierzytelniania

Po co takie kombinacje  ?

--
Jest sobie formularz dodania jakiegoś artykułu na jakieś tam stronie. Dane z formularza wysyłamy Ajaxem na backend, czyli bez przeładowania strony
Teraz mamy scenariusze:
- User jest zalogowany, wiec backend na podstawie sesji uwierzytelnia typa i przypisuje artykuł do jego konta wysyła  JSONA z info, że art został dodany i czyści formularz może od razu przejśc na stronę z artykułem;
- User NIE jest zalogowany wiec wyskakuje popup Zaloguj się / Zarejestruj. Znowu dane z tego formularza w popupie modal idą na backend razem z danymi z formularza artykułu i tworzony jest user lub logowany, wiec znamy jego ID do którego przypisujemy artykuł. Jeśli wymagane jest potwierdzenie e-maila usera to wysyłany jest e-mail z potwierdzeniem. Do tego czasu konto + artykuł jest nieaktywne lub zapisane w tymczasowej tabeli.

 

ITD...

 


<form method="post" action="/mybackend">

// Pola formularza w DIVe widocznym od razu
// Okno modal logowanie / rejestracji zrobionych w formie np zakaldek TAB's. To okno aktywuje frontend jesli z bacendu przyjdzie JSON'em zwrot, ze user nie jest zalogowany 

</form>

 

https://javascript.info/formdata

 

  • Thanks 1

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności