Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Czyszczenie inputut od usera
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cześc, Próbuję popełnić klasę do czyszczenia inputów od userów.

klasa Request:
  1. namespace nameOne;
  2.  
  3. class Request
  4. {
  5.  
  6. public $post;
  7. public $get;
  8.  
  9. public function sanitizePostString($request)
  10. {
  11. $this->post = filter_input(INPUT_POST, $request, FILTER_SANITIZE_STRING);
  12. return $this->post;
  13. }
  14.  
  15. public function sanitizePostArray($request)
  16. {
  17. $this->post = filter_input_array(INPUT_POST, $request, FILTER_SANITIZE_STRING);
  18. return $this->post;
  19. }
  20. }



Kawałek próbujący wyświetlić wyczyszczony post:
  1. if (isset($_POST['submitTest']) && isset($_POST['testText'])) {
  2. $cleanTestText = new Request();
  3. echo '<br>' . $cleanTestText->sanitizePostString($_POST['testText']);
  4. }


Oczywiście nic się nie wyświtla. W klasie robiłem return 'dupa' i też się ona nie wyświetla. Post przechodzi, no bo echo $_POST['testText'] wyświetla wpisany tekst.


Boże co za wstydliwy post. Gdybym tego nie robił w OOP, którego się uczę, to bym w życiu nie pytał o takie pierdoły sad.gif



EDIT: Skoro po tylu wyświetleniach nikt nie odpisał to ja odpiszę (bo rozwiązałem problem) smile.gif
  1. if (isset($_POST['submitTest']) && isset($_POST['testText'])) {
  2. $cleanTestText = new Request();
  3. echo '<br>' . $cleanTestText->sanitizePostString('testText');
  4. }


Ten post edytował sadistic_son 6.01.2023, 12:18:40


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


I jaki jest cel tego oczyszczania? Bo do wrzucenia do bazy przez bindowanie zbędne. Do jakiegoś oczyszczania z html - za słabe. Nie czepiam się tylko musisz sobie uświadomić że musi być jakiś cel tej metody. Jeśli to na rozmowę o pracę to pewnie ktoś zada to samo pytanie.


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Hmm, do html za słabe? Cel jest taki żeby wyczyścić ze wszystkiego co może popsuć cokolwiek na stronie lub w bazie. Do bazy używam bindowania, racja.

Jak rozumiem z manuala to FILTER_SANITIZE_STRING czyści htmlowe tagi oraz cudzysłowy. to nie wystarczy?
"Strip tags and HTML-encode double and single quotes, optionally strip or encode special characters."

Ten post edytował sadistic_son 6.01.2023, 14:18:58


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A doszedłeś do tej części manuala?
Deprecated as of PHP 8.1.0, use htmlspecialchars() instead

Nie stosuje się oczyszczania na zaś. Raz potrzebujesz datę, innym razem maila.


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Uzywam obecnie PHP Version 8.0.25, ale good point - trzeba zaprzestać używania tego, co wycofane.
  1. //czyli zamiast:
  2. $this->post = filter_input(INPUT_POST, $request, FILTER_SANITIZE_STRING);
  3.  
  4. //wystarczy to?
  5. $this->post = htmlspecialchars($request);
I tyle? POST bezpieczny i gotowy do bindowania przed wrzuceniem do bazy?
Tablicy tym nie wyczyszczę, co?

Ten post edytował sadistic_son 6.01.2023, 14:38:43


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Są znacznie bardziej zaawansowane ataki bazujące np na zestawie innych znaków. A jak będziesz potrzebował oryginał zmiennej? Uparłeś się nie wiedzieć czemu na to pseudo zabezpieczenie i trzymasz się tego.


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


No nie, nie uparłem się. Ale nie mogę wziąć jakiegoś gotowego komponentu co ma 100 linijek, a sam takiego nie napiszę. Chcę to zabezpieczyć z grubsza - przed zwykłym userem co co najwyżej umie F12 wcisnąć w przeglądarce, a nie przed kimś z grupy anonymous wink.gif

EDIT:
Ale już widzę, że htmlspecialchars nie zabezpiecza np przed taką wartością wrzucona do inputu ---> <script>alert('siema');</script>

Ten post edytował sadistic_son 6.01.2023, 14:57:12


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


To atak xss. I dlatego od dawna wybijamy ci tutaj używanie takich metod. Ja bym na Twoim miejscu zrobił to normalnie czyli chociaż zapoznał się jak działają zewnętrzne biblioteki do walidacji. Robiłem rekrutacje i gdybyś mi wyskoczył z takim kodem to długo byśmy nie porozmawiali. Nie musisz w 100% rozumieć bibliotek, ale musisz znać podstawy od psr zaczynając. I co najmniej rozumieć podstawy typowania. Jakieś zabezpieczanie przez bindowanie. A przede wszystkim, i to jest całkowita podstawa, musisz umieć czytać dokumentację php oraz bibliotek zewnętrznych. Jak ktoś powie ze masz użyć biblioteki x to nie musisz jej znać ale musisz rozumieć coś z opisu.

Ten post edytował viking 6.01.2023, 15:56:35


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #9





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Ok, brzmi rozsądnie. W takim razie oleję ten przykład z ksiązki który wałkowałem. Poleć mi więc proszę jakąś przystępną, niezbyt zaawansowaną bilbiotekę do czyszczenia inputów.
A bind z PDO to wystarczy zupełnie do zabezpieczenia się przed problemami z danymi z bazy?

Ten post edytował sadistic_son 6.01.2023, 16:07:54


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:03