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

Walidacja formularza

Aruba Cloud - Virtual Private Server VPS
0 głosów
563 wizyt
pytanie zadane 5 sierpnia 2020 w JavaScript przez b1aster Nowicjusz (120 p.)

Bardzo dziękuję za fantastyczny trop na uniknięcie botów. Ale jak konkretnie można by zrobić takie pole? Samo ukrycie to pestka, ale jak go "okodować", żeby tylko i wyłącznie pole puste było warunkiem koniecznym do wysłania? Kod wygląda np. tak:

<input type="text" name="Imię" placeholder="Imię" required="">

Oczywiście w tym przypadku musi być ono wypełnione, żeby formularz został wysłany. Co w związku z tym można wpisać zamiast required?

związane z odpowiedzią na: Jak zabezpieczyc formularz przed spamem

2 odpowiedzi

0 głosów
odpowiedź 5 sierpnia 2020 przez Ehlert Ekspert (214,940 p.)

Jeśli dobrze zrozumiałem potrzebujesz:

  1. Input type hidden 
  2. Token csrf
  3. Captchę
komentarz 6 sierpnia 2020 przez b1aster Nowicjusz (120 p.)
Chodziło mi raczej o to jak zrobić takie pole żeby jego niezaznaczenie było warunkiem do wysłania formularza. Przykładowo jest 5 pól które muszą być wypełnione ( required="" ) i jeszcze jedno które musi być puste. Wtedy można wysłać formularz.
komentarz 6 sierpnia 2020 przez jankustosz1 Nałogowiec (36,800 p.)
Bez captchy żadne sztuczki nie zabezpieczą przez botami, choć captche też można relatywnie tanio łamać.

Selenium wykonuje js i nie ważne co tam wrzucisz zachowa się jak zwykły użytkownik.

Jeżeli ktoś robi bota na requestach to przede wszystkim patrzy na network, a nie na to jakie masz pola w htmlu. Więc tu także jakieś ukryte pola sensu nie mają.
komentarz 6 sierpnia 2020 przez Ehlert Ekspert (214,940 p.)

@b1aster, no to ogarnij jakąś bibliotekę js do walidacji formularzy. 

@jankustosz1 polecam poczytać, czym jest token csrf.

komentarz 6 sierpnia 2020 przez jankustosz1 Nałogowiec (36,800 p.)
Jeżeli dobrze rozumiałem token CSRF jest po to by mieć pewność, że przekierowanie/request na daną stronę nastąpiło z oryginalnej strony, a nie z np. strony hakera, aby np. haker nie mógł zmusić nas do requestu na stronę banku który przeleje mu pieniądze, akurat, gdy jesteśmy w 2 karcie zalogowani do tegoż banku.

Nie bardzo widzę związku z tym, a zabezpieczeniem przed botem. Bot nie ma problemu by trzymać ciasteczka sesji.

Autor chyba dał mylący tytuł, bo nie chodzi mu o walidację formularza, a raczej zabezpieczeniem przed botami.
0 głosów
odpowiedź 6 sierpnia 2020 przez _Pita_ Stary wyjadacz (11,410 p.)
edycja 6 sierpnia 2020 przez _Pita_

Takie zabezpieczenie nie jest według mnie dobrym rozwiązaniem, o wiele bardziej polecam reCaptche od Google....

Ale jeśli chcesz użyć swojego sposobu, to polecam użyć standardowej walidacji, czyli:

<?php
if($_POST['imie'] != "" ){
echo  "To pole powinno być puste"
}
else{
//Pole jest puste
}

?>

 (PHP)

Oczywiście input może (a nawet powinien) mieć display: none albo inny tego typu atrybut.

P.S

Nie jest to wymóg i prawdopodobnie zadziała bez tego ale proponuję usunięcie polskich znaków w atrybucie name.

komentarz 6 sierpnia 2020 przez Ehlert Ekspert (214,940 p.)
To co napisałeś wyżej to nie jest walidacja, ba określiłbym to jako niebezpieczne.

Dla inuptów type hidden, a nie display none.
komentarz 6 sierpnia 2020 przez _Pita_ Stary wyjadacz (11,410 p.)

ba określiłbym to jako niebezpieczne.

To, że sposób jest zły, podkreśliłem na początku, dodając, że powinno używać się reCaptcha

To co napisałeś wyżej to nie jest walidacja,

Walidacja (ang. validation) – w naukach technicznych i informatyce działanie mające na celu potwierdzenie w sposób udokumentowany i zgodny z założeniami, że procedury, procesy, urządzenia, materiały, czynności i systemy rzeczywiście prowadzą do zaplanowanych wyników.

Wikipedia

Mój kod php ma na celu sprawdzić, czy input jest pusty ("Czy procesy prowadzą do pustej zmiennej "$_POST[' '] ")

Dla inuptów type hidden, a nie display none.

Jest jakaś różnica w efekcie? Dodałem  " albo inny tego typu atrybut." type hidden chyba się do tego zalicza... Nie jestem też pewien,czy inputy typu hidden wysyłają POST

komentarz 6 sierpnia 2020 przez Ehlert Ekspert (214,940 p.)

Captcha to zabezpieczenie przed botami. Ja nawiązywałem do tego marnego ifa, który jest wzorowany na kursach MZ. Niebezpieczeństwo niesie ze sobą użycie operatora !=

Oczywiście że hidden jest wysyłany. Po co komu niewidoczny input, który nie byłby wysyłany.

Możesz mieć rację pisząc taki kod i podpierać się zgodnością z tym co piszą na Wikipedii. Ale z takim podejściem nie znajdziesz dobrej pracy wink

komentarz 7 sierpnia 2020 przez _Pita_ Stary wyjadacz (11,410 p.)

Ale z takim podejściem nie znajdziesz dobrej pracy 

 Z jakim podejściem i dlaczego?

Podobne pytania

+1 głos
2 odpowiedzi 641 wizyt
pytanie zadane 24 czerwca 2022 w JavaScript przez AgentTecza Obywatel (1,810 p.)
+1 głos
2 odpowiedzi 1,400 wizyt
pytanie zadane 3 listopada 2020 w JavaScript przez ptomeccc Użytkownik (800 p.)
0 głosów
2 odpowiedzi 1,833 wizyt
pytanie zadane 18 października 2018 w JavaScript przez drraco Początkujący (370 p.)

93,324 zapytań

142,323 odpowiedzi

322,389 komentarzy

62,652 pasjonatów

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!

...