Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przesyłanie zmiennych między stronami
Forum PHP.pl > Forum > PHP
lukaszmaster
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. }
emajl22
Jeśli to ma związek z bazą danych mysql to nie. Poczytaj o mysql_real_escape_string.
Temat: SQL Injection Insertion
lukaszmaster
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,
fander
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.
Pilsener
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ć?
thek
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
fander
Nie ma co karmić trola, wystarczy że użyje wyszukiwarki na forum, albo google, tego typu problemy były wałkowane miliony razy
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.