Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] przekazywaine parametrow w URL
hhg
post 27.08.2007, 23:56:19
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


z tego co wiem przekazywanie parametrow w URL

Kod
storna.pl/podstrona.php?parametr1=wartosc1


jest niezbezpieczne (np PHP injection)

czy przed tym wystarczy zabepieczenie:
  1. <?php
  2. switch ($_GET['parametr1']) {
  3.  
  4. case 'podstrona1.html':
  5. operacje na wartosci..
  6. case ....
  7.  
  8. }
  9. ?>



? jak sie zabezpieczyc przed takimi url-atakami?
Go to the top of the page
+Quote Post
tsharek
post 28.08.2007, 07:03:01
Post #2





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

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


Witam,

Może się mylę, ale wystarczy rzutowanie lub sprawdzanie typów + nie używanie EVALa czy innej funkcji wykonującej coś ze stringa (SYSTEM, EXEC) ze zmiennych hyperglobalnych. W Twoim przypadku dodałbym jednego ifa:
  1. <?php
  2. if(!isset($_GET['parametr1'] || !is_string($_GET['parametr1'])) $_GET['parametr1']='';
  3.  
  4. switch ($_GET['parametr1']) {
  5.  
  6. case 'podstrona1.html':
  7. operacje na wartosci..
  8. case ....
  9.  
  10. }
  11. ?>

żeby nie otrzymywać warningów o niezgodnści typów jak ktoś wyśle
Kod
storna.pl/podstrona.php?parametr1['ble']=wartosc1


Pozdrawiam,
tsharek


--------------------
Go to the top of the page
+Quote Post
hhg
post 28.08.2007, 18:45:17
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


czyli atak przez to jest niemozliwy??
Go to the top of the page
+Quote Post
fredzio90
post 29.08.2007, 14:24:08
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 19.02.2007

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


jeżeli wartościami są TYLKO liczby to polecam taki sposób:

  1. <?php
  2. if(intval($_GET['parametr1'])) {
  3. switch ($_GET['parametr1']) {
  4.  
  5. case 'podstrona1.html':
  6. operacje na wartosci..
  7. case ....
  8.  
  9. }
  10. }
  11. ?>


albo ogólne zabezpieczenie:

  1. <?php
  2. if (preg_match("/union|select/i", strtolower($_SERVER['REQUEST_URI']))) {
  3. die('System wykrył obecność nieprawidłowej zmiennej w adresie URL. Prawdopodobnie pró
    ba włamania się do systemu.'
     );
  4. }
  5. ?>


Ten post edytował fredzio90 29.08.2007, 14:26:01
Go to the top of the page
+Quote Post
PanGuzol
post 29.08.2007, 22:06:12
Post #5





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


addslashes()" title="Zobacz w manualu PHP" target="_manual


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
tsharek
post 30.08.2007, 06:41:33
Post #6





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

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


Cytat(fredzio90 @ 29.08.2007, 15:24:08 ) *
jeżeli wartościami są TYLKO liczby to polecam taki sposób:

  1. <?php
  2. if(intval($_GET['parametr1'])) {
  3. switch ($_GET['parametr1']) {
  4.  
  5. case 'podstrona1.html':
  6. operacje na wartosci..
  7. case ....
  8.  
  9. }
  10. }
  11. ?>

Takie coś CI wogle nie zadziała, bo w w casie masz stringa.


Cytat
albo ogólne zabezpieczenie:

  1. <?php
  2. if (preg_match("/union|select/i", strtolower($_SERVER['REQUEST_URI']))) {
  3. die('System wykrył obecność nieprawidłowej zmiennej w adresie URL. Prawdopodobnie pró
  4. a włamania się do systemu.' );
  5. }
  6. ?>

Cytat
addslashes()


A to raczej odnosi się sqlinjection, a najleprzym sposobem na zabezpieczenie przed tym są jednak funkcje z *_escape_string


--------------------
Go to the top of the page
+Quote Post
hhg
post 30.08.2007, 12:22:14
Post #7





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


Cytat
Takie coś CI wogle nie zadziała, bo w w casie masz stringa.
to bylo schematycznie smile.gif

Kod
inval(); instrukcje


hmm a jezeli ktos wstawi w $_GET['zmienna'] np schemat:



Kod
3 ); $sql="DROP TABLE USERS" ... funkcja(



to będzie


Kod
intval(3); $sql="DROP TABLE USERS" ... funkcja()
Go to the top of the page
+Quote Post
tsharek
post 30.08.2007, 12:42:26
Post #8





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

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


ojejku.. a czemu miało by tak niby być? chyba nie rozumiesz zasad działania języka PHP. Jeżeli nie użyjesz funkcji eval to nigdy nic nie zdziałasz wpisując niewadomo co w $_GET/$_POST/$_COOKIE


--------------------
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: 1.08.2025 - 02:00