Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przesyłanie zmiennych między stronami
lukaszmaster
post 27.01.2011, 15:29:30
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.01.2011

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


Witam,
przesyłanie zmiennych między stronami zwykle wykonuje za pomocą POST, GET i SESJI, czasami zmienne widoczne są w adresie strony. Zwykle przesyłam wartości zmiennych jako liczby lub tekst bez specjalnych znaków. No i napisałem funkcję do odbierania tych zmiennych usuwającą niepożądane znaki aby ktoś mi takiej zmiennej nie zamienił. Poniżej wklejam kod i mam pytanie czy to wystarczy aby do zmiennej nie dostał się złośliwy kod, albo jakieś zapytanie do bazy?

  1. //bezpieczne odbieranie zmiennych
  2. function odbierz($txt) {
  3. {
  4. $txt = stripslashes($txt);
  5. }
  6. return str_replace(array('\\',"'",'"','>','<','/'), array("","","","","",""), trim($txt));
  7. }
Go to the top of the page
+Quote Post
emajl22
post 27.01.2011, 15:35:50
Post #2





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

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


Jeśli to ma związek z bazą danych mysql to nie. Poczytaj o mysql_real_escape_string.
Temat: SQL Injection Insertion

Ten post edytował emajl22 27.01.2011, 15:36:20


--------------------
Go to the top of the page
+Quote Post
lukaszmaster
post 31.01.2011, 10:55:33
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.01.2011

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


No ale jeśli ktoś będzie chciał podstawić jakiś kod do zmiennej to raczej znaczniki zostaną wycięte i kod będzie bezużyteczny i nie narobi szkody?
np odbieram zmienną która potem będzie wartością wstawioną do zapytania mysql.

  1.  
  2. $id = odbierz($_REQUEST['id']);
  3.  
  4. if (is_numeric($id)) {
  5. $sql = mysql_query("SELECT pola FROM uzytkownicy WHERE id='$id'");
  6.  
  7. }
  8.  
  9.  



no i czy w ten sposób można podmienić zmienną id przesyłaną w adresie strony na taki kod który umożliwiłby wyciągnięcie danych o użytkowniku questionmark.gif

A ja teraz odgrzeję temat ze względu na przykładowego użytkownika emajl22.

Zmorą naszych, polskich forów są użytkownicy którzy o temacie nie mają zielonego pojęcia, a tylko potrafią skorzystać z wyszukiwarki w manualu. Mało tego jeszcze nie w tym manualu co trzeba. Nie mam zielonego pojęcia po grzyb nabijać sobie liczbę postów pod awatarem? Czy dają za to jakieś nagrody lub pieniądze?

Czytałem tu sporo tematów, co niektórzy mam wrażenie wpisują w dokumentacji temat i wklejają linka(nawet nie czytają czy wyszukiwarka trafiła z rezultatami wyniku). A nie czytają bo zapewne z angielskim problem.


Więc emajl22 zanim napiszesz coś bez sensu i bez jakichkolwiek argumentów poparcia swojej tezy to zastanów się 2 razy. Jeżeli myślisz że ktoś uzna cię za eksperta w dziedzinie po liczbie odpowiedzi na forum to się mylisz. Wykaż się wiedzą a nie liczbą odniesień do dokumentacji.

Na amerykańskim forum dostałem konkretne odpowiedzi na ten sam temat, ludzie pokazali kod który mógł zaszkodzić, wytknęli błędy - na tym to polega. A tu mam wrażenie forumowicze boją się że będą mieli zbyt dużą konkurencje na rynku pracy jak ktoś od nich się czegoś dowie.

Ja wiem że w swojej dziedzinie jestem dobry i podejrzewam że przez najbliższe 30 lat(o ile dożyje) z pracą nie będzie problemu, żadnego! Bo jak czyta się takie fora to aż żal du*e ściska że niektóre osoby biorą się za programowanie. Strach by było powierzyć napisanie czegokolwiek poważniejszego ludziom z takim podejściem


Pozdrawiam,


Ten post edytował lukaszmaster 27.01.2011, 16:01:19
Go to the top of the page
+Quote Post
fander
post 31.01.2011, 12:54:09
Post #4





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

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


Cytat
Na amerykańskim forum dostałem konkretne odpowiedzi na ten sam temat, ludzie pokazali kod który mógł zaszkodzić, wytknęli błędy - na tym to polega. A tu mam wrażenie forumowicze boją się że będą mieli zbyt dużą konkurencje na rynku pracy jak ktoś od nich się czegoś dowie.

Nie ma takiego kraju jak "Ameryka" forum może być anglojęzyczne

Cytat
Ja wiem że w swojej dziedzinie jestem dobry i podejrzewam że przez najbliższe 30 lat(o ile dożyje) z pracą nie będzie problemu, żadnego! Bo jak czyta się takie fora to aż żal du*e ściska że niektóre osoby biorą się za programowanie. Strach by było powierzyć napisanie czegokolwiek poważniejszego ludziom z takim podejściem


Czyli jesteś mechanikiem, bo skoro twierdzisz że jesteś "dobry" to nie powinieneś pisać postów z prośbą o pomoc w sprawach oczywistych i znanych "dobrym" programistom.

Cytat
czy to wystarczy aby do zmiennej nie dostał się złośliwy kod, albo jakieś zapytanie do bazy


Nie napisałeś co konkretnie chcesz z tą zmienną zrobić. Temat o SQL Injection Insertion był jak najbardziej odpowiedni co do twojego pytania.

Ten post edytował fander 31.01.2011, 12:54:31
Go to the top of the page
+Quote Post
Pilsener
post 31.01.2011, 13:55:07
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Był już temat o bezpieczeństwie skryptów, nie ma jednej i uniwersalnej funkcji, to co podałeś jest kompletnie bez sensu, z wielu powodów:
- nie uwzględnia źródła pochodzenia zmiennej ani jej typu, nie sprawdza nawet, czy zmienna nie jest pusta
- sam usuwasz slashe, więc jak to się ma do bezpieczeństwa? Wycinasz slesze i wklejasz potem zmienną do zapytania sql?
- nie uwzględnia miejsca docelowego zmiennej (kod, plik, baza, url, sesja, value="" w formularzu)
- co z kodem HTML?
- zamiast dezaktywować niedozwolone znaki wycinasz je, napiszesz userom, że nie mogą używać cudzysłowów czy apostrofów bo nie umiesz tego okodować?
Go to the top of the page
+Quote Post
thek
post 31.01.2011, 13:59:41
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Powiem tak... Pytanie zadałeś tak ogólne, że trudno na nie jednoznacznie odpowiedzieć. Kod który napisałeś jest błędny, gdyż wycinasz wszystko jak leci zamiast zastanowić wpierw co powinno się robić w określonych przypadkach bo o ile <script> niesie niebezpieczeństwo to już nierówność, czyli y > x+5 jest jak najbardziej normalna i bezpieczna, a mimo to tniesz >. To czego potrzebujesz jest zależne od tego co chcesz z zawartością zmiennej zrobić. Czy ma iść do bazy, czy ma być przetworzone dalej po stronie php, czy jakoś specjalnie wrzucone do pliku, czy może ma być w określonym formacie. Jak więc ma się Ci pomóc, skoro nie sprecyzowałeś swego pytania? Pojechałeś po emajl22, choć on jako jedyny zdecydował się zaryzykować i na podstawie tych skąpych danych zgadywał do czego możesz chcieć użyć tego co wewnątrz zmiennej. Na chwile obecną to Twoje pytanie może być porównane do: "Skręcam kable elektryczne. Czy to bezpieczne?" nie podając nam pod jakim napięciem i czy są te kable w chwili obecnej, do czego są podłączone, jakie to wytwarza napięcie i natężenie (prąd o niskim napięciu ale wysokim natężenie jest równie, jeśli nie bardziej zabójczy dla człowieka) i rzucając, że używasz rękawiczek. Co nam z tego, skoro nie wiemy czy te rękawiczki Ci coś dadzą w kontakcie z kablem, który trzymasz. Ja mogę napisać tylko kilka rzeczy: prepared statements, mysql_query_real_escape, pdo. Ale zapewne taka odpowiedź Cię nie satysfakcjonuje. Mi w zupełności by wystarczyła


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
fander
post 1.02.2011, 10:32:56
Post #7





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

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


Nie ma co karmić trola, wystarczy że użyje wyszukiwarki na forum, albo google, tego typu problemy były wałkowane miliony razy
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 Wersja Lo-Fi Aktualny czas: 17.06.2025 - 14:49