![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Hej,
luźny temat z pytaniem co myślicie to tej małej klasie: Jej zadaniem ma być sprawdzenie jeszcze w bootstrapie czy akcje zadań są wykonywane przez usera a nie bota itd.
Demo:
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Przyglądam się temu listingowi od kilku minut i nie mogę wyjść z podziwu dla ilości bezsensownego kodu, który się w niej znajduje. Spawnm, czy w ogóle zastanowiłeś się nad tym, co chcesz osiągnąć, a co napisałeś? Może się zdziwisz, ale cała ta Twoja powyższa klasa jest równoważna... dwóm ifom:
Kod if(!isset($_SERVER['HTTP_REFERER'] )){ throw new Exception('security failed.'); } if(!$this->refererIsLocal() ){ throw new Exception('security failed.'); } Na co Ci te tablice i pętle w środku, kiedy one absolutnie niczemu nie służą? Przecież ten problem jest zupełnie niezależny od tego czy określone pole w $_POST/$_GET istnieje czy nie. Powiem nawet więcej: jeśli dwa pola istnieją, to sprawdzasz w kółko pierdylion razy ten sam warunek, o którym już wiesz, że jest prawdziwy, bo jakby był fałszywy, to by się przy pierwszej iteracji już wysypał. Osobną kwestią jest sensowność założeń samego zabezpieczenia. Zabezpieczeń nie projektuje się w ten sposób, że myślisz sobie "chcę się zabezpieczyć przed botem", a później wymuszasz na użytkowniku konieczność istnienia losowo wybranego przez Ciebie nagłówka HTTP (w tym przypadku Referer). Co komu szkodzi napisać bota, który ma referera? Co zwykłemu użytkownikowi szkodzi takowy wyłączyć? Pomyślałeś o tym? Chyba nie. Nieuczciwych botów nigdy nie wytniesz, a uczciwym wystarczy plik robots.txt. Bezsensowne jest też użycie programowania obiektowego w tym miejscu i w takiej formie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 20:55 |