Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [skrypt/www] Ocena skryptu własnego CMS
materkamil
post 13.06.2012, 17:30:30
Post #1





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Ostatnio po ocenie mojej stronki okazało się że ma ona dużo luk i błędów. Jednak teraz napisałem coś podobnego, całkowicie samemu, wszystko w PHP. Jest to tak jakby CMS - własny prosty system zarządzania treścią nazwany po prostu od nicku materCMS. Oto link do niego:

http://www.materdefense.hostzi.com/matercms/

Możliwe że jest w nim jakaś luka ponieważ używany jest w nim komunikacja z bazą SQL, includowanie plików, id, do tego jeszcze pracuje on również na plikach tekstowych.
Panel Admina również znajduje się:

http://www.materdefense.hostzi.com/matercms/admin

Myślę że jest on dobrze zabezpieczony i nie powinien mieć luk ale no sami wiecie. Skrypt jest oparty na sesjach. Po ostatnim "incydencie" sam już nie wiem.

Nie chodzi mi o komentowanie wyglądu, bo jego zmienię jeszcze sto razy tylko głównie mechanizmu i tego całego PHP

Kod skryptu jest tu: (zip, 12 KB)
http://wrzucacz.pl/file/9911339606258

Ten post edytował materkamil 13.06.2012, 17:52:01


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
10 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 19)
Korab
post 13.06.2012, 17:44:56
Post #2





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

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


To jeszcze podaj proszę dane dostępu do panelu admina.

Przechowywanie danych dostępowych do bazy w głównym katalogu w niezabezpieczonym pliku tekstowym bez żadnego szyfrowania nie wydaje mi się dobrym pomysłem.

Ten post edytował Korab 13.06.2012, 17:48:20
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 17:47:08
Post #3





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Chwilę poczekamy z danymi, może nie będą dla was - haxiorów potrzebne. Za chwilę oczywiście dam, tylko zabiorę funkcję zmieniania danych SQL (hasło itp).
Już przyznam się że zaliczyłem jedną wpadkę, bo po skasowaniu ciasteczek PA był dostępny bez hasła, oczywiście teraz już zabezpieczyłem to.

Edit: Przed sekundą znalazłem błąd pozwalający na SQL Injection w PA. Zabezpieczyłem i dodałem na wrzucacz nową wersję. Jak ktoś nie chce pobierać to w katalogu admin pliku passupdate.php dodałem htmlspecialchars

Edit: Co do txt - akurat mój serwer nie podgląda plików txt. A co tu można w zamian ciekawego wymyślić?

Ten post edytował materkamil 13.06.2012, 18:19:00


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
!*!
post 13.06.2012, 18:35:00
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Niczego się nie nauczyłeś podczas analizy poprzednich kodów. Nadal powielasz te same złe nawyki sprzed kilku lat.
Kod
<?

  1. include("konfiguracja_bazy.php");


  1. $q = "select admin_login,admin_pass from admin_pass where admin_id=1";
  2. $zapytanie = mysql_query($q);

Polecenia SQL piszemy z dużej. Przejdź na PDO.

  1. $o = fopen("strony.txt","r");
  2. $t = fread($o,filesize("strony.txt"));
  3. fclose($o);
  4. $array = explode("|",$t);

Dla jednego pliku taka armata?

  1. if($_GET["id"] == strip_tags($array[0]) || strip_tags($_GET["id"]) == strip_tags($array[1]) || strip_tags($_GET["id"]) == strip_tags($array[2]) || strip_tags($_GET["id"]) == strip_tags($array[3]) || $_GET["id"] == strip_tags($array[4]) || $_GET["id"] == "newsy") {
  2. include("strony/".$_GET["id"].".txt");
  3. }

Tu już pojechałeś po całości biggrin.gif Więcej strip_tags() nie mogłeś? i odwołanie do pliku z linku? Kiepski pomysł, patrz niżej.

I tak jak wspomniał przedmówca... Odwołujesz się do czystego tekstu, i to pełni rolę pliku konfiguracyjnego do bazy?
Klik


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 18:42:21
Post #5





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Jeśli chodzi o strip tags to widzę że nie zrozumiałeś kodu. Dodając w PA strony od razu dodaje się również hiperłącze. Jako że w id jest sama nazwa usuwamy to hiperłącze. Ten strip_tags jest użyty wcale nie do obrony, lecz do skasowania tego hiperłącza.

Co daje wg. ciebie <?php a <?

Co do armaty, smile.gif lubię pisać bardzo zrozumiale. Wiem że można to w 1 linijce ale dla mnie tak jest wygodniej.

Co do klika, przecież to jest tylko pokazywanie nieistniejącej strony jako zawartość geta, do tego z strip_tags i nie stanowi to żadnego zagrożenia (chodzi o pozdrowienia dla php.pl)

Do tego z tym plikiem txt. Jak zmienili byście to wy? Bo ja coś pomysłu nie mam.

Ten post edytował materkamil 13.06.2012, 18:46:23


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
!*!
post 13.06.2012, 18:48:50
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(materkamil @ 13.06.2012, 19:42:21 ) *
Jeśli chodzi o strip tags to widzę że nie zrozumiałeś kodu. Dodając w PA strony od razu dodaje się również hiperłącze. Jako że w id jest sama nazwa usuwamy to hiperłącze. Ten strip_tags jest użyty wcale nie do obrony, lecz do skasowania tego hiperłącza.

I twoim zdaniem jest to cacy?

Cytat(materkamil @ 13.06.2012, 19:42:21 ) *
Co daje wg. ciebie <?php a <?

Chociażby poprawne kolorowanie skladni w edytorach, apropo, masz źle zakodowane pliki, UTF8 powinno być.
A w include masz coś innego w nazwie pliku niż tekst? Jak nie, to używaj apostrofów, tak samo w echo.

Cytat(materkamil @ 13.06.2012, 19:42:21 ) *
Co do klika, przecież to jest tylko pokazywanie nieistniejącej strony i nie stanowi to żadnego zagrożenia (chodzi o pozdrowienia dla php.pl)

Pewien żeś? Pomyśl, po co mam wstawiać na Twoją stronę cokolwiek...

Cytat(materkamil @ 13.06.2012, 19:42:21 ) *
Do tego z tym plikiem txt. Jak zmienili byście to wy? Bo ja coś pomysłu nie mam.


Stałe. To Ci wystarczy na początek.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 18:54:55
Post #7





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Cytat
Pewien żeś? Pomyśl, po co mam wstawiać na Twoją stronę cokolwiek...


Ja jestem na 100% pewien. Przecież tagi są wycięte itp. więc można tu wstawić jedynie tekst. Możesz pokazać coś przykładowo w tym co niby błąd stanowi?

Cytat
A w include masz coś innego w nazwie pliku niż tekst? Jak nie, to używaj apostrofów, tak samo w echo.


Nie rozumię o co chodzi. Możesz powiedzieć troszkę jaśniej

Cytat
I twoim zdaniem jest to cacy?


No na pewno działa ładnie i wszystko jest ok. Więc chyba jest "cacy" smile.gif


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
!*!
post 13.06.2012, 19:00:01
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Patrz tu
Jak wyślę takiego linka Twojemu klientowi, bo mam nowe zlecenie w kieszeni.

Cytat
Nie rozumię o co chodzi. Możesz powiedzieć troszkę jaśniej

  1. include 'plik.php';
  2. echo 'cokolwiek';

Taki kod jest wydajniejszy. Niż:

  1. include "plik.php";
  2. echo "cokolwiek";


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 19:09:32
Post #9





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


No ok, racja z odstraszaniem klientów ale coś poza tym?

Czyli ogólnie oprócz małych błędów nie wpływających na bezpieczeństwo skryptu wszystko jest ok (oprócz tego txt z którym dalej chciałbym coś zrobić)?



Ten post edytował materkamil 13.06.2012, 19:18:26


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
!*!
post 13.06.2012, 19:15:00
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Jak wrzucę takie linki do spambotów... , Nawet nie wysyłasz żadnych nagłówków że taka strona nie istnieje. Nie walidujesz w żaden sposób danych, nie sprawdzasz ich typów, w ogóle niczego z nimi nie robisz, skrypt jest dziurawy jak sito.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 19:24:21
Post #11





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Jak sito to raczej nie jest bo nie da się dzięki temu przejąć kontroli nad stronką. Jednak na wszelki wypadek zmienię tą opcję i będę wyświetlał zwykły błąd


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
!*!
post 13.06.2012, 19:25:52
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(materkamil @ 13.06.2012, 20:24:21 ) *
Jak sito to raczej nie jest bo nie da się dzięki temu przejąć kontroli nad stronką. Jednak na wszelki wypadek zmienię tą opcję i będę wyświetlał zwykły błąd

Skąd wiesz że nie? Myślisz że po co wymyślono walidację danych?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 19:43:00
Post #13





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Walidację stosuje się w określonych przypadkach. Jeśli wszystko jest wycinane a ty wyświetlasz tekst który nigdzie się nie zapisuje to jest to bezpieczne. A wyszukiwarki? Też wyświetlają: Nie znaleziono costam


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
Niktoś
post 13.06.2012, 20:09:10
Post #14





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Ograniczaj długość pól input w formularzach- nie lekceważ tego, gdyż ktoś Ci może puścić z dymem stronę(atak na tablice post/get),serwer(DDOS),baze danych(przekroczenie maksymalnej dozwolonej liczby znaków w danej kolumnie,nawet jeśli jest ustawiona na max) .
Wszystkie te możliwe ataki mogą być tragiczne w skutkach, a wszystko przez to,że nie ograniczasz ilości znaków w polu input.
Maksymalne żądanie post to(o ile się nie mylę) jest standardowo ustawione na 8M-przekroczenie tej wielkości może wygenerować błąd i wyciek cennych informacji.
Na bazie danych max varchar wynosi 65535 bytes -przekroczenie tej ilości znaków(w przełożeniu na bity) np.w zapytaniu select może wygenerować error i wyciek informacji(nazwy tabeli/kolumn może nawet i nazwy bazy danych).


Cytat
Walidację stosuje się w określonych przypadkach.

Walidacje należy stosować zawsze i wszędzie, gdzie użytkownik ma jakiś wpływ na stan aplikacji(najlepiej po stronie serwera- opcjonalnie po stronie serwera i klienta(walidacja typu client-side).

Ten post edytował Niktoś 13.06.2012, 20:35:08
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 20:33:38
Post #15





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Cytat(Niktoś @ 13.06.2012, 21:09:10 ) *
Ograniczaj długość pól input w formularzach


ohmy.gif
Takich herezji dawno nie słyszałem

Przecież długość pola input nie ma większego znaczenia dla osoby znającej chociaż podstawy HTML. Wystarczy z własnego serwera utworzyć action do pliku z własnego formularza.

A w tym przypadku user nie ma nic do stanu aplikacji przecież. Czy ja się mylę?


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
Niktoś
post 13.06.2012, 20:39:21
Post #16





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Cytat
Czy ja się mylę?

Mylisz się i to bardzo.Nie ograniczając pól input -możesz władować w nie dozwoloną ilość znaków(treść naprawdę długą) w rezultacie czego żądanie post może nie obsłużyć tego, a tym bardziej baza danych jeśli pójdzie do niej treść z inputa.
Pamiętaj ,że jeden znak w utf-8 wyciśnięty z klawiatury to 8bitów.

Ten post edytował Niktoś 13.06.2012, 20:41:49
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 20:44:03
Post #17





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Podaj przykład kodu ograniczonego inputa proszę


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
Niktoś
post 13.06.2012, 20:46:04
Post #18





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


No nie-atrybut maxlenght .Poćwicz trochę html.
Go to the top of the page
+Quote Post
materkamil
post 13.06.2012, 20:48:21
Post #19





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 24.04.2012

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


Tak, spoko właśnie chciałem to usłyszeć. Jeszcze się upewniłem że mówisz głupoty. No to teraz powiedz mi jak ja zrobię coś takiego na localhost:

<form action=http://www.strona.pl/skrypt.php method=post>
<input type=text name=pole>
<input type=submit>
</form>

I wysyłam dane z własnego komputera więc ograniczenie maxlenght mam gdzieś bo POST nie jest nigdzie ograniczona

Ten post edytował materkamil 13.06.2012, 20:51:03


--------------------
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com
Go to the top of the page
+Quote Post
Niktoś
post 13.06.2012, 20:53:39
Post #20





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


No to po prostu twój serwer nie obsłuży żądania jeśli żądanie będzie większe niż wartość stanadardowo ustawiona w php.ini ,czyli 8M, co za różnica gdzie post będzie szedł.Problem doskonale widać przy wysyłaniu dużych plików,gdzie żądanie POSt nie jest w stanie tego obsłużyć.
Nie ograniczenie pól input stwarza możliwość zainicjowania takiego żądania.

Cytat
Jeszcze się upewniłem że mówisz głupoty. No to teraz powiedz mi jak ja zrobię coś takiego na localhost:


No to tkwij dalej w swej mądrości.Co za tupet-człowiek chce doradzić, no ale jak ktoś pozjadał wszelakie rozumy to nic nie poradzę.Rób jak chcesz. Zapewne nie słyszałeś o POST OVERLOADING, to zapewne kiedyś usłyszysz.

Ten post edytował Niktoś 13.06.2012, 21:07:16
Go to the top of the page
+Quote Post

10 Stron V   1 2 3 > » 
Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:20