Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

22 Stron V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> SQL Injection/Insertion, Jak zapobiec włamaniu na stronę.
Seth
post 3.03.2005, 18:08:48
Post #21





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


To o czym piszesz sprawdza sie przy liczbach, natomiast do ciagow znakow trzeba juz inaczej do tego podchodzic.
Go to the top of the page
+Quote Post
MStaniszczak
post 3.03.2005, 20:40:59
Post #22





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

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


@krzemian:
Cytat
Ostatnio zrobiłem coś takiego na zmiennej $id z GET'a i nawet jeśli dałem id=3fk5 to jeśli zrzutowałem to na (int) otrzymywałem 35. Chyba o to wam chodzi, nie?


Ciekawe co piszesz - sprawdź co zwróci skrypt...
  1. <?php
  2. $x = '3fk5';
  3. $a = (int)'3fk5';
  4. $b = (int)$x;
  5.  
  6. echo $a.'<br>'.$b;
  7. ?>


A teraz popróbuj:

  1. <?php
  2. $a = '1abc';
  3. $b = '2ii';
  4. $d = '-3ala ma kota a kot ma ale';
  5.  
  6. $ret = $a+$b;
  7. echo $ret.'<br>';
  8.  
  9. $ret += $d;
  10. echo $ret.'<br>';
  11.  
  12. $ret = $b*$d;
  13. echo $ret.'<br>';
  14.  
  15. ?>


Pozdrawiam
Marcin Staniszczak
Go to the top of the page
+Quote Post
ActivePlayer
post 3.03.2005, 21:23:10
Post #23





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Moze ktos napisze klase, lub zbiór funkcji, alby uniknąc tego typu problemów, tylko ze... tu problem nie polega na tym, co zrobic zeby sprawdzic jaki typ danych user wpisze, tylko raczej na tym jak mądrze napisac zapytanie.
Go to the top of the page
+Quote Post
MStaniszczak
post 3.03.2005, 23:18:12
Post #24





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

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


Ja używam czegoś takiego (ma już swoje latka - dodałem tylko public;-):

  1. <?php
  2. require_once(ROOT_PATH.'Libraries/Tools/email.inc.php');
  3.  
  4. define('VALIDATE_EMAIL', 1);
  5. define('VALIDATE_STRING', 2);
  6. define('VALIDATE_INTEGER', 3);
  7. define('VALIDATE_DOUBLE', 4);
  8. define('VALIDATE_POSTCODE', 5);
  9. define('VALIDATE_BOOLEAN', 6);
  10.  
  11. class Validate {
  12. private function checkStrSize($value, $minSize, $maxSize) {
  13. if(strlen(trim($value))>$maxSize || strlen(trim($value))<$minSize)
  14. return false;
  15. else
  16. return true;
  17. }
  18.  
  19. //array( array('typ', 'value', 'min', 'max', 'correct')
  20. public function check($array) {
  21. $ret = array(true, $array);
  22.  
  23. $count = count($array);
  24. for($i=0; $i<$count; $i++) {
  25. switch($array[$i][0]) {
  26. case VALIDATE_EMAIL: // e-mail
  27. if(!tverifyEmail($array[$i][1])) {
  28. $ret[0] = false;
  29. $ret[1][$i][4] = false;
  30. } else
  31. $ret[1][$i][4] = true;
  32. break;
  33. case VALIDATE_STRING: // string
  34. if(!$this->checkStrSize($array[$i][1], $array[$i][2], $array[$i][3])) {
  35. $ret[0] = false;
  36. $ret[1][$i][4] = false;
  37. } else
  38. $ret[1][$i][4] = true;
  39. break;
  40. case VALIDATE_INTEGER: //integer
  41. if(!is_numeric($array[$i][1]) || 
  42. (strpos($array[$i][1], ',')!==false) || (strpos($array[$i][1], '.')!==false) ||
  43. $array[$i][1]<$array[$i][2] || $array[$i][1]>$array[$i][3]) {
  44. $ret[0] = false;
  45. $ret[1][$i][4] = false;
  46. } else
  47. $ret[1][$i][4] = true;
  48. break;
  49. case VALIDATE_DOUBLE: // double
  50. if(!is_numeric($array[$i][1]) || $array[$i][1]<$array[$i][2] || $array[$i][1]>$array[$i][3]) {
  51. $ret[0] = false;
  52. $ret[1][$i][4] = false;
  53. } else
  54. $ret[1][$i][4] = true;
  55. break;
  56. case VALIDATE_POSTCODE:
  57. if(!@ereg('^[0-9]{2}-[0-9]{3}$', $array[$i][1])) {
  58. $ret[0] = false;
  59. $ret[1][$i][4] = false;
  60. } else
  61. $ret[1][$i][4] = true;
  62. break;
  63. case VALIDATE_BOOLEAN:
  64. if(!is_bool($array[$i][1])) {
  65. $ret[0] = false;
  66. $ret[1][$i][4] = false;
  67. } else
  68. $ret[1][$i][4] = true;
  69. break;
  70. }
  71. }
  72.  
  73. return $ret;
  74. }
  75. }
  76. ?>


A plik email.inc.php:
  1. <?php
  2. if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
  3. $OS_detect = 'Windows NT';
  4. else
  5. $OS_detect = 'Unix';
  6.  
  7. function checkdnsrrWinNT($host, $type = '') {
  8. if(!empty($host)) {
  9.  
  10. if($type=='')
  11. $type = 'MX';
  12.  
  13. @exec(&#092;"nslookup -type=$type $host\", $output);
  14.  
  15. while(list($k, $line)=each($output)) {
  16. if(eregi( &#092;"^$host\", $line)) {
  17. return true;
  18. }
  19. }
  20. return false;
  21. }
  22. }
  23.  
  24.  
  25. function multiOScheckdnsrr($host, $type='') {
  26. global $OS_detect;
  27.  
  28. if(strcmp($OS_detect,'Windows NT')===0)
  29. return checkdnsrrWinNT($host, $type);
  30. else
  31. if(strcmp($OS_detect, 'Unix')===0) {
  32. if(strcmp($type, '')===|| strcmp($type, 'MX')===0)
  33. return checkdnsrr($host, MX);
  34. elseif(strcmp($type, 'A')===0)
  35. return checkdnsrr($host, A);
  36. elseif(strcmp($type, 'NS')===0)
  37. return checkdnsrr($host, NS);
  38. elseif(strcmp($type, 'SOA')===0)
  39. return checkdnsrr($host, SOA);
  40. elseif(strcmp($type, 'PTR')===0)
  41. return checkdnsrr($host, PTR);
  42. elseif(strcmp($type, 'CNAME')===0)
  43. return checkdnsrr($host, CNAME);
  44. elseif(strcmp($type, 'AAAA')===0)
  45. return checkdnsrr($host, AAAA);
  46. elseif(strcmp($type, 'ANY')===0)
  47. return checkdnsrr($host, ANY);
  48. }
  49. }
  50.  
  51. function verifyEmail($email) {
  52. $wholeexp = '/^(.+?)@(([a-z0-9.-]+?).[a-z]{2,5})$/i';
  53. $userexp = &#092;"/^[a-z0-9~!#$%&()-_+=[];:'\",./]+$/i\";
  54. if(preg_match($wholeexp, $email, $regs)) {
  55. $username = $regs[1];
  56. $host = $regs[2];
  57. if(multiOScheckdnsrr($host, 'MX')) {
  58. if(preg_match($userexp, $username)) {
  59. return true;
  60.  }else {
  61.  return false;
  62.  }
  63.  }else {
  64.  return false;
  65.  }
  66. }else {
  67. return false;
  68. }
  69. }
  70. ?>


Dalej validuje już w odpowiednich funkcjach - inaczej chyba ciężko;-)

Pozdrawiam
Marcin Staniszczak

Ten post edytował MStaniszczak 3.03.2005, 23:18:45
Go to the top of the page
+Quote Post
docent
post 4.03.2005, 00:18:29
Post #25





Grupa: Zarejestrowani
Postów: 34
Pomógł: 2
Dołączył: 21.11.2003
Skąd: Kraków

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


no to i moje 3 grosze. primo: nie ma to jak szczyt lenistwa:

Kod
foreach($_REQUEST as $key => $item) $$key = addslashes($item);


mam nadzieje, ze sie podoba tongue.gif oczywiscie nie wszedzie uzyteczne, niekoniecznie optymalne i nie zawsze dzialamy tylko na $_REQUEST. ale mniej wiecej juz znacie geneze smile.gif mozliwe modyfikacje oczywiscie:

Kod
foreach($_POST as $key => $item) $_POST[$key] = addslashes($item);


itd... smile.gif zamiast addslashes mozna dac intvalue, albo i obydwa.. jesli nie frunie duzo danych to i tak nie bedzie roznicy w czasie wykonywania skryptu - a nie trzeba z dokladnoscia ksiegowego sprawdzac czy o czyms (czyt. ktorejs zmiennej) nie zapomnielismy

pierwsza metoda (dla nei wiedzacych) symuluje niejako Register Globals na On, czyli zamiast odwolywac sie do strval($_REQUEST['zmienna']) mozemy po wykonaniu tamtego odwolac sie po prostu do $zmienna, ktora juz jest sparsowana pod kategm 'nieporzadanej' zawartosci

EDIT:

dziala oczywiscie i w druga strone. jesli do $rekord zczytamy sobie jakies dane z bazy danych to mozna sobie leniwie wrzucic:

Kod
foreach($rekord as $key => $item) $rekord[$key] = stripslashes($item);


tylko nalezy pamietac, aby czytac dane za pomcoa mysql_fetch_assoc lub row - nie mysql_fetch_array, gdyz wtedy mamy podwojne klucze w tablicy i wiadomo co sie stanie smile.gif

Ten post edytował docent 4.03.2005, 00:21:06


--------------------
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."

(Przydatne zapytania MySQL)
Go to the top of the page
+Quote Post
Vengeance
post 4.03.2005, 19:04:20
Post #26





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


@docent: szczerze to zadna nowosc snitch.gif

----
Przez chwilke pomyslalem, ze mozna by zmienne przekazyawc przez:
www.site.com?int[postID]=4&string[mode]=showAll&bool[save]=true

I robic odpowiednie petle na tablicach, stosujac odpowiednie funkcje smile.gif


--------------------
Go to the top of the page
+Quote Post
MStaniszczak
post 4.03.2005, 19:08:24
Post #27





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.10.2004

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


Cytat
Przez chwilke pomyslalem, ze mozna by zmienne przekazyawc przez:
www.site.com?int[postID]=4&string[mode]=showAll&bool[save]=true

I robic odpowiednie petle na tablicach, stosujac odpowiednie funkcje smile.gif


I otrzymali byśmy w GET coś takiego:-) Więc bardzo miło;-)

Kod
Array
(
    [int] => Array
        (
            [postID] => 4
        )

    [string] => Array
        (
            [mode] => showAll
        )

    [bool] => Array
        (
            [save] => true
        )

)


Pozdrawiam
Marcin Staniszczak
Go to the top of the page
+Quote Post
docent
post 4.03.2005, 23:48:57
Post #28





Grupa: Zarejestrowani
Postów: 34
Pomógł: 2
Dołączył: 21.11.2003
Skąd: Kraków

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


Cytat(Vengeance @ 2005-03-04 20:04:20)
@docent: szczerze to zadna nowosc snitch.gif

----
Przez chwilke pomyslalem, ze mozna by zmienne przekazyawc przez:
www.site.com?int[postID]=4&string[mode]=showAll&bool[save]=true

I robic odpowiednie petle na tablicach, stosujac odpowiednie funkcje smile.gif

heihei ja nie mowie, ze nowowsc - ale informacja dla tych, ktorzy nie znaja smile.gif a istotnie - jest pomocna :] bardziej mnie interesowalo zdanie innych na ten temat - sposob w zasadzie sam sobie stwrozylem (choc pewnie kazdy na to wpadl we wlasnym zakresie) i interesowalo mnie tylko zdanie innych w tej kwestii smile.gif


--------------------
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."

(Przydatne zapytania MySQL)
Go to the top of the page
+Quote Post
tara
post 2.04.2005, 17:32:31
Post #29





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 3.03.2004
Skąd: śląsk

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


w sumei można też tak, np. dla newsów:
  1. <?php
  2.  
  3. if(isset($_GET['id'])) {
  4.   $query1 = &#092;"SELECT MAX(ID) FROM newsy\";
  5. list($d) = mysql_fetch_row(mysql_query ($query1));
  6.  
  7. if ($_GET['id']> $d) {
  8. print &#092;"Blad\";
  9. } else {
  10.  
  11. // kod 
  12.  
  13. }
  14. }
  15.  
  16. ?>


To blokuje wysiwetlanie newsa np. 9999 jak i tekstu. w zmiennej id.

Ten post edytował tara 2.04.2005, 17:33:28


--------------------
MySQL 4.0.15 | PHP 4.3.3 | Apache 1.3.28 | Kwrite | phpMyAdmin 2.5.6-rc1 | Linux MDK 10.1 pp
Go to the top of the page
+Quote Post
limak
post 11.04.2005, 21:05:08
Post #30





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 13.03.2004
Skąd: Siemianowice Śl.

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


Cytat
To blokuje wysiwetlanie newsa np. 9999 jak i tekstu. w zmiennej id.
no dobra, ale to niewiele ma do zabiezpieczenia przed SQL Injection...
akurat wyswietlenie newsa nr 99999 nie wprowadza zadej nowej mozliwosci ataku....

wracając do tematu....

http://www.phpsolmag.org/pl/modules/wmpdow...php?cid=1&lid=6

tutaj jest darmowy artykuł z magazynu php solutions


--------------------
karczmarczyk.com
Go to the top of the page
+Quote Post
tara
post 11.04.2005, 21:06:48
Post #31





Grupa: Zarejestrowani
Postów: 147
Pomógł: 0
Dołączył: 3.03.2004
Skąd: śląsk

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


heh no ale jak ktoś wprawdzi DROP TABLE itp. to też zablokuje winksmiley.jpg


--------------------
MySQL 4.0.15 | PHP 4.3.3 | Apache 1.3.28 | Kwrite | phpMyAdmin 2.5.6-rc1 | Linux MDK 10.1 pp
Go to the top of the page
+Quote Post
MoD
post 11.04.2005, 21:33:24
Post #32





Grupa: Zarejestrowani
Postów: 193
Pomógł: 0
Dołączył: 14.09.2003
Skąd: Brodnica (koło Torunia)

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


Cytat(MStaniszczak @ 2005-02-28 04:21:48)
Hmmm.... wykonanie ereg zajmuje nieco czasu (jak to wyrażeń regularnych). [...]

Szczerze mówiąc, to wolę stracić tą sekundę w czasie wykonywania skryptu niż stracić na bezpieczeństwie. I mniejszy bałagan w kodzie - jedna funkcja zamiast szeregu IF. A wyrażenie regularne można w razie czego łatwo zmodyfikować jeśli się znajdzie błąd.


--------------------
Go to the top of the page
+Quote Post
tarlandil
post 29.04.2005, 07:47:36
Post #33





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.04.2005

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


IMHO dosc wygodna i bezpieczne rozwiazanie:
  1. <?php
  2.  
  3. function CheckValue($type,$v,$default=&#092;"\")
  4. {
  5. if (!function_exists(&#092;"CheckValue_$type\")) return \"\";
  6. $func=&#092;"CheckValue_$type\";
  7. return $func($v,$default);
  8. }
  9.  
  10. function SQLValue($type,$v,$default=&#092;"\")
  11. {
  12. if (!function_exists(&#092;"SQLValue_$type\")) return \"\";
  13. $func=&#092;"SQLValue_$type\";
  14. return $func($v,$default);
  15. }
  16. ?>


a potem definiujemy swoje funckje sprawdzajace
  1. <?php
  2.  
  3. function CheckValue_int($v,$default=&#092;"\")
  4. {
  5. if (!is_numeric($v)) return (int)$default;
  6. return (int) $v;
  7. }
  8.  
  9. function SQLValue_int($v,$default=&#092;"\")
  10. {
  11. return CheckValue_int($v,$default);
  12. }
  13.  
  14. function CheckValue_ident($v,$default=&#092;"\")
  15. {
  16. $v=trim($v);
  17. if (!preg_match(&#092;"/^([wd]+)$/\",$v)) return $default;
  18. return $v;
  19. }
  20.  
  21. function SQLValue_ident($v,$default=&#092;"\")
  22. {
  23. $v=CheckValue_ident($v,$default);
  24. $v=addslashes($v);
  25. return &#092;"'$v'\";
  26. }
  27.  
  28. function CheckValue_text($v,$default=&#092;"\")
  29. {
  30. $v=trim($v);
  31. $v=htmlspecialchars($v,ENT_QUOTES);
  32. return $v;
  33. }
  34.  
  35. function SQLValue_text($v,$default=&#092;"\")
  36. {
  37. $v=CheckValue_text($v,$default);
  38. $v=addslashes($v);
  39. return &#092;"'$v'\";
  40. }
  41.  
  42. itd..
  43.  
  44. ?>


a wykoanie zapytania np tak:
  1. <?php
  2.  
  3. $result=$sql->SendQuery(sprintf(
  4. &#092;"select * from przedmiot where id=%s and parent=%s;\",
  5. SQLValue(&#092;"ident\",$GLOBALS[\"id\"]),
  6. SQLValue(&#092;"ident\",$GLOBALS[\"parent\"])
  7. ));
  8.  
  9. ?>


I w ten sposob nawet przy braku magic quotes czy tez mozliwosci wielu zapytan w jednemy poleceniu, nikt nie przepcha zadnego zlosliwego kodu.

Ten post edytował tarlandil 29.04.2005, 07:50:11
Go to the top of the page
+Quote Post
Jarod
post 8.05.2005, 17:11:33
Post #34





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(Vengeance @ 2005-02-27 13:44:07)
przez mysql_query() nie. ale funckje postgreSQL już to dopuszczają :/
Dlatego userzy tego drugiego mają większy problem.

Co do zabezpieczenia, nie wiem czym się tak przejmujecie? ;]
Ja stosuje jedynie addslashes() oraz usuwam slowo 'UNION' ze zmiennych

Cytat
przez mysql_query() nie. ale funckje postgreSQL już to dopuszczają :/
Dlatego userzy tego drugiego mają większy problem.

A jak go rozwiązać?
Cytat
Co do zabezpieczenia, nie wiem czym się tak przejmujecie? ;]
Ja stosuje jedynie addslashes() oraz usuwam slowo 'UNION' ze zmiennych

Przecież addslashes() to tosamo co mysql_escape_string() worriedsmiley.gif


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
sobstel
post 8.05.2005, 17:35:35
Post #35





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(J4r0d @ 2005-05-08 17:11:33)
Cytat(Vengeance @ 2005-02-27 13:44:07)
przez mysql_query() nie. ale funckje postgreSQL już to dopuszczają :/
Dlatego userzy tego drugiego mają większy problem.

Co do zabezpieczenia, nie wiem czym się tak przejmujecie? ;]
Ja stosuje jedynie addslashes() oraz usuwam slowo 'UNION' ze zmiennych

Cytat
przez mysql_query() nie. ale funckje postgreSQL już to dopuszczają :/
Dlatego userzy tego drugiego mają większy problem.

A jak go rozwiązać?
Cytat
Co do zabezpieczenia, nie wiem czym się tak przejmujecie? ;]
Ja stosuje jedynie addslashes() oraz usuwam slowo 'UNION' ze zmiennych

Przecież addslashes() to tosamo co mysql_escape_string() worriedsmiley.gif

1. np. mozna przefiltrowac ciag wyrzucajac wszelkie sredniki

2. funkcja nie sa sobie rownoznaczne

mysql_real_escape_string() calls MySQL's library function mysql_escape_string, which prepends backslashes to the following characters: NULL, \x00, \n, \r, \, ', " and \x1a.

addslashes() : Returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
johnson
post 8.05.2005, 17:46:29
Post #36





Grupa: Zarejestrowani
Postów: 90
Pomógł: 2
Dołączył: 3.12.2004

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


Cytat(J4r0d @ 2005-05-08 16:40:02)
Więc, które rozwiązanie bezpieczniejsze? Stosować addslashes() ?

Nie rozumiem o co Wam chodzi z tym addslashes().
Czy chodzi o podwójne stosowanie addslashes()?
Raz przecież robi to samo php. Otrzymując dane z formularzy dostajemy postać:
To jest \"smaczny deser\"
Czy trzeba to jeszcze raz potraktować addslashes() i otrzymać:
To jest \\\"smaczny deser\\\"
i dopiero wtedy wrzucać do bazy? Już od dawna mnie frapuje ten problem smile.gif czy może ktoś to wyjaśnić?
Go to the top of the page
+Quote Post
sobstel
post 8.05.2005, 17:48:08
Post #37





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


addslashes() (jeden raz!!!) powinno w zupelnosci wystarczyc. przy sotsowaniu mysql_escape_string moze sie pojawic porblem przy wyciganiu danych z bazy i stosowaniu stripslashes()


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Peter Riley
post 8.05.2005, 17:49:40
Post #38





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 7.05.2005

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


Smieszne sa te wasze rozwazania, nie szkoda czasu?
Przypomina mi to wiare w zabobony.
Addslashes zalatwia calkowice sprawe, sprobujcie sie wlamac bez mozliwosci uzycia apostrofu. Mozecie wpisywac UNION, srednik i co tylko chcecie, ale to nic nie da, bo i tak co najwyzej zostanie wciagniete do bazy jako czesc stringa.
Do liczb is_numeric i wystarczy.
Go to the top of the page
+Quote Post
Jarod
post 8.05.2005, 17:56:50
Post #39





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat
Nie rozumiem o co Wam chodzi z tym addslashes().
Czy chodzi o podwójne stosowanie addslashes()?


Chodzi o to, że slash dodawany jest jeżeli włączona jest jakaś opcja (już nie pamiętam o jaką chodziło - szukaj na pierwszej stronie tego topicu).
A jak dodadsz addslashes() to nawet jak dodawanie slasha jest wyłączone to ty massz pewność.

Cytat
Smieszne sa te wasze rozwazania, nie szkoda czasu?
Przypomina mi to wiare w zabobony.

Bezpieczeństwo - szkoda czasu? worriedsmiley.gif Nie dla mnie :roll2:
Cytat
Addslashes zalatwia calkowice sprawe, sprobujcie sie wlamac bez mozliwosci uzycia apostrofu. Mozecie wpisywac UNION, srednik i co tylko chcecie, ale to nic nie da, bo i tak co najwyzej zostanie wciagniete do bazy jako czesc stringa.
Do liczb is_numeric i wystarczy.

Skoro tak mówisz to będę tak robił. Jaby co to wiemy do kogo z pretensjami tongue.gif

Dziękuje za odpowiedź i pozdrawiam


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
Peter Riley
post 8.05.2005, 18:43:03
Post #40





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 7.05.2005

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


Cytat(J4r0d @ 2005-05-08 16:56:50)
Bezpieczeństwo - szkoda czasu?  worriedsmiley.gif  Nie dla mnie :roll2:

A co z bezpieczenstwem ma wspolnego kasowanie ciagow typu UNION ze zmiennej, w ktorej i tak kazdy apostrof zostanie wysleszowany? Nic.
addslash lub magic quote zalatwia calkowicie sprawe sql injection, oczywiscie pozostaje sprawdzenie czy nadeslane dane mieszcza sie w dozwolonym zakresie, ale to juz inna historia.

Ten post edytował Peter Riley 8.05.2005, 18:45:39
Go to the top of the page
+Quote Post

22 Stron V  < 1 2 3 4 > » 
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: 28.03.2024 - 12:52