• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zabezpieczanie kodu przed wstrykiwaniem sql

Object Storage Arubacloud
0 głosów
596 wizyt
pytanie zadane 25 maja 2016 w PHP przez Kacper Duda Obywatel (1,970 p.)

Witam

Mam pytanie, czy poniższy kod może całkowicie unieszkodliwić włamanie przez wstrzykiwanie sql?
Jak są jakieś błędy ortograficzne to proszę nie zwarzać uwagi :)

$text = str_replace("'", "'", $text);
$text = str_replace('"',""", $text);

$bla = $polaczenie->query("SELECT * FROM uzytkownicy WHERE user='$text'");

 

komentarz 25 maja 2016 przez efiku Szeryf (75,160 p.)
Patrz co podesłał Comandeer.

3 odpowiedzi

+5 głosów
odpowiedź 25 maja 2016 przez Comandeer Guru (601,930 p.)
Ten kod przed niczym nie zabezpiecza...

Prepared statements, tyle w temacie: http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php/60496#60496
0 głosów
odpowiedź 25 maja 2016 przez Paweł Chyła Użytkownik (560 p.)

Podępne się pod pytanie kolegi, żeby nie tworzyć kolejnego tematu na forum. Przeglądałem link podesłany przez Comandeera i tam zmienne są przekazywane w funkcji execute w postaci tablicy. Moje pytanie brzmi czy bindowanie zmienych przez bindParam też jest poprawne, czy tylko używać bindowania w execute ??


 
2
komentarz 25 maja 2016 przez efiku Szeryf (75,160 p.)
W execute każdy parametr domyślnie traktowany jest jako PDO::PARAM_STR.
–4 głosów
odpowiedź 25 maja 2016 przez CzikaCarry Szeryf (75,340 p.)
Lepiej użyj Htmlentities i stałej ENT_QUOTES
komentarz 25 maja 2016 przez Comandeer Guru (601,930 p.)
A jak to niby zabezpiecza przed SQLi?
komentarz 25 maja 2016 przez CzikaCarry Szeryf (75,340 p.)
Zamienia np. myślniki i cudzysłowia na ciągi innych znaków które nie są elementami składni mysql https://www.w3.org/wiki/Common_HTML_entities_used_for_typography
3
komentarz 25 maja 2016 przez Comandeer Guru (601,930 p.)

Ok, to teraz szybki przykład SQLi na Twój sposób.

Baza danych:

CREATE TABLE `test` (
  `test` int(11) NOT NULL,
  `test2` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `test` (`test`, `test2`) VALUES
(1, 0),
(2, 0),
(3, 0),
(4, 0),
(5, 0);

Kod PHP:

<?php
$test = htmlentities( '\\', ENT_QUOTES );
$test2 = htmlentities( ' OR 1=1 #', ENT_QUOTES );

var_dump($esc);
$db = new mysqli('localhost', 'root', '', 'test');
$s = "SELECT * FROM test WHERE test = '" . $test . "' AND test2 = '" . $test2. "'";
var_dump( $s );
$q = $db->query( $s );

while( $r = $q->fetch_assoc() ) {
	var_dump( $r );
}

Wniosek: o kant stołu se można potłuc to całe htmlentities.

Podobne pytania

+1 głos
4 odpowiedzi 615 wizyt
pytanie zadane 21 kwietnia 2015 w PHP przez makoso Mądrala (7,380 p.)
0 głosów
0 odpowiedzi 437 wizyt
pytanie zadane 2 lipca 2018 w PHP przez aleksander_szut Użytkownik (940 p.)
+1 głos
2 odpowiedzi 379 wizyt
pytanie zadane 11 sierpnia 2020 w PHP przez Bakkit Dyskutant (7,600 p.)

92,620 zapytań

141,471 odpowiedzi

319,794 komentarzy

62,002 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...