Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: HTML 5 a Hacking
Forum PHP.pl > Forum > PHP
MESSIAH :)
Mam właśnie pytanie odnośnie bezpieczeństwa w języku HTML 5. Dajmy na to że na stronie mam formularz rejestracyjny a w inputach mam required z np. atrybutem pattern jak w przykładzie:
  1. <form action="demo_form.asp">
  2. Country code: <input type="text" name="country_code"
  3. pattern="[A-Za-z]{3}" title="Three letter country code">
  4. <input type="submit">
  5. </form>

I teraz pytanie czy jest to bezpieczne jeśli nie posiadam żadnej funkcji w PHP do walidacji danych z inputów? Czy ktoś może wysłać jakimś programem POSTa z danymi tak aby obejść zabezpieczenie pattern w inpucie? Bo jeśli tak można to ktoś może z łatwością wysyłać kody PHP lub JS.
aras785
Cytat(MESSIAH :) @ 16.08.2016, 17:59:31 ) *
Mam właśnie pytanie odnośnie bezpieczeństwa w języku HTML 5. Dajmy na to że na stronie mam formularz rejestracyjny a w inputach mam required z np. atrybutem pattern jak w przykładzie:
  1. <form action="demo_form.asp">
  2. Country code: <input type="text" name="country_code"
  3. pattern="[A-Za-z]{3}" title="Three letter country code">
  4. <input type="submit">
  5. </form>

I teraz pytanie czy jest to bezpieczne jeśli nie posiadam żadnej funkcji w PHP do walidacji danych z inputów? Czy ktoś może wysłać jakimś programem POSTa z danymi tak aby obejść zabezpieczenie pattern w inpucie? Bo jeśli tak można to ktoś może z łatwością wysyłać kody PHP lub JS.


Wysłać możesz co chcesz. To nie html odbiera te dane tylko PHP (np).
To są pomocnicze funkcję tak aby użytkownik wiedział w jakiej formie powinnien wprowadzić dane (np. nr telefonu). A nie do zabezpieczenia formularzy
MESSIAH :)
Czyli najlepszym wyjściem jest walidacja poprzez PHP tak jak myślałem. Więc jaka jest najlepsza funkcja do "oczyszczania" danych?
Pyton_000
Ale Ty masz problemy... Zawsze, ale to zawsze walidacja powinna być po stronie serwera. Po stronie klienta pozwoli w dużej części odsiać głupoty ale przed niczym nie zabezpieczy. Jak sam wspomniałeś można sobie np. CURLem wysłać request i na nic zabezpieczenia.

Czym filtrować? To zależy co. preg_match, rzutowanie, sprawdzanie wartości w tablicy itd itd. Rozwiązań tyle ilu programistów.
Comandeer
W specyfikacji HTML5 jest osobna sekcja poświęcona bezpieczeństwu formularzy:
Cytat
Servers should not rely on client-side validation. Client-side validation can be intentionally bypassed by hostile users, and unintentionally bypassed by users of older user agents or automated tools that do not implement these features. The constraint validation features are only intended to improve the user experience, not to provide any kind of security mechanism.


I tak, składam żądania HTTP poza przeglądarką i to dość często (patrz: cURL choćby).
MESSIAH :)
Panowie pytam bo spotkałem akurat takich magików co w HTML 5 używają inputów bez walidacji a walidację czy input jest pełny zrobili w PHP. Jak dla mnie to idiotyzm sprawdzać w PHP inputa na zawartość kiedy lepiej przerzucić to na HTMLa.
Comandeer
Cytat
Jak dla mnie to idiotyzm sprawdzać w PHP inputa na zawartość kiedy lepiej przerzucić to na HTMLa.

Przeczytaj ten fragment ze specyfikacji HTML5. Jeśli dalej jest to dla Ciebie idiotyzm, przeczytaj jeszcze raz.

Formularze w HTML-u to nic innego jak forma GUI na żądania HTTP. Jak wiadomo, w systemie operacyjnym GUI można ominąć i klupnąć wszystko w konsoli. Tak samo można i w Sieci. Wcale nie muszę używać formularza, żeby przesłać do Twojej strony dane. Tym samym bez walidacji po stronie serwera mogę przesłać co chcę. Raj dla wszelkiego rodzaju ataków SQLi (no chyba że używasz prepared statements!), niespójności bazy danych (nagle w polu na e-mail dostaniesz biblię Gutenberga) czy XSS.
com
w html walidacja jest po to żebyś mógł sobie ładnie ostylować jak przypadkiem się ktoś pomyli, a nie do zabezpieczania przed niczym. W przeglądarce wykona Ci się od razu a do serwera musisz czekać na odpowiedź, ale to nie służy zabezpieczaniu niczego wink.gif
viking
Najprostszy sposób. Firebug, usuń atrybut (czyli twoje pattern), wyślij formularz. Dalej sądzisz że jest to głupota?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.