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

zabezpieczanie php/sql

Object Storage Arubacloud
+1 głos
605 wizyt
pytanie zadane 21 kwietnia 2015 w PHP przez makoso Mądrala (7,380 p.)

Elo mam pytanie czy takie "filtrowanie" wystarczy aby wykluczyć ataki przy przesyłaniu danych przy podobnym układnie kodu jak ten?

$id_produktu=$_POST['id_produkt'];
$id_produktu = addslashes($id_produktu);
$id_produktu = htmlspecialchars($id_produktu);
$ilosc=$_POST['sztuk'];
$ilosc = addslashes($ilosc);
$ilosc = htmlspecialchars($ilosc);
$cena_produktu=mysql_query("SELECT **** FROM ***** WHERE ******='$******'");
$wynik = mysql_fetch_assoc($cena_produktu);
$cena_p = $wynik['*******'];
$cena=$ilosc * $cena_p;




	$wynik = mysql_query("INSERT INTO `****` (`*****` ,`*****` ,`******` ,`*****` ,`*****`)VALUES (NULL ,  '$*****',  '$*****',  '$*****',  '$****')");

może dużo pogwiazdkowałem ale nie chce aby nazwy gdzieś wyciekły :)

4 odpowiedzi

+2 głosów
odpowiedź 21 kwietnia 2015 przez SyntaxError Pasjonat (17,170 p.)

No faktycznie dużo wygwiazdkowane. Filtracja jest, jedyne do czego by można się doczepić to sposób łączenia z bazą. Radzę zapoznać się z mysqli, bo w nowszych wersjach PHP-a będziesz miał Warninga. A w mysqli masz od razu mysqli_real_escape_string

komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
zapomniałem o małpce :) wystarczy że dodam @ i po problemie nie musze zmieniać swojego stylu kodowania w którym chcę dokończyć aktualny projekt?

Bo np przy łączeniu mam @ bez niej owszem pokazywało warning
komentarz 21 kwietnia 2015 przez SyntaxError Pasjonat (17,170 p.)

No ale wyciszenie warninga to chyba nie jest jednak rozwiązanie problemu. :D Poczytaj sobie tutaj dokładnie o co chodzi. 

komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
tak czytałem podobne artykuły ale szczerze nie mam pojęcia jak się zabrać za to bo ja się "boje" nowych funkcji -.-

mógłbyś mi podać jakie są odpowiedniki

mysql_connect

mysql_select_db

mysql_query

te 3 wyżej wymienione jako tako oczytałem

mysql_num_rows

mysql_fetch_assoc <--- najważniejsze

bo "składnia" pytania jest taka sama tylko polecenia bym musiał pozmieniać tam gdzie musze a nie wiem jak to leci z tym programowaniem obiektywnym -.- nie znam się na tym -.-
komentarz 21 kwietnia 2015 przez SyntaxError Pasjonat (17,170 p.)
edycja 21 kwietnia 2015 przez SyntaxError

mysql_connect to jest konstruktor mysqli, tzn.:
 

$connection = new mysqli('host', 'user', 'pass', 'database');

Jak widzisz nie musisz więc używać select_db, bo bazę wybierasz przy tworzeniu połączenia. Dalej mysql_query to jest metoda query na obiekcie klasy mysqli. Czyli:

$query = $connection->query("SELECT * FROM tabela");

Następna mysql_num_rows to jest atrybut obiektu zwracanego przez metode query. Czyli:

echo $query->num_rows;

I ostatnia mysql_fetch_assoc to jest metoda tego samego obiektu:

while($line = $query->fetch_assoc()) echo $line['id'];

Warto też wspomnieć, że zarówno obiekt mysqli jak i ten zwracany przez query wypadało by zamknąć na koniec skryptu:

$query->close(); $connection->close();

 

komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
Wielkie Dzięki! masz oddemnie ogromnego + :)
jutro czeka mnie troszkę pracy z przebudową kodu ale tragicznie to nie wygląda zobaczę co wyjdzie ale coś czuje że się jeszcze odezwę z problem :) bo dzień bez problemu dzniem straconym ;)
komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
Może dziwne ale poczytałem o PDO tak jak napisał kolega niżej i chyba wydaje się mi lepsze tak narazie poczytałem poglądowo jak wygląda kod polecenia itp :)
komentarz 21 kwietnia 2015 przez SyntaxError Pasjonat (17,170 p.)
PDO równiez możesz stosować jak najbardziej. ;)
komentarz 21 kwietnia 2015 przez efiku Szeryf (75,160 p.)

NIE UŻYWAJ STFU OPERATORA! tej @..!!!!!!

 

Ok? 

Ok. To teraz poczytaj sobie o PDO i łap połączenie pdo w try-catch bo jak nie złapiesz to wypluje ładnie login i hasło, dodatkowo, parametry będziesz sobie mógł zbindować i twój kod odnośnie filtrowania zmieni się w 3 wiersze :x

 

Dzięki i pozdrawiam:P

Syntax +1:>

+1 głos
odpowiedź 21 kwietnia 2015 przez darek_kce Gaduła (3,180 p.)

Moim osobistym zdaniem, trochę za dużo tego filtru. W tym wypadku wystarczyłoby napisać:

$id_produktu=intval($_POST['id_produktu']);
$ilosc=intval($_POST['sztuk']);

skoro są to wartości liczbowe. A i tak jak napisał SyntaxError, przeżuć się na MySQLi.

komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
W sumie masz rację ale nie zaszkodzi tak jak mam :)
jednak intval o której dopiero teraz przeczytałem przyda mi sięprzy tablicy GET przy paginacji :)
+1 głos
odpowiedź 21 kwietnia 2015 przez HaKIM Szeryf (87,590 p.)

Błagam. Nigdy nie zaczynaj tematu od "Elo"...

Wtedy mam dziwne wyobrażenie osoby która siedzi po tamtej stronie monitora.

A dokładnie wyobrażam sobie chłopaka w czapce z daszkiem, który liże lizaka, ma kręcone włosy, rude i jest pyzowaty. 

Serio.

Pozdrawiam. :-)

 

komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
Dobez postaram się używać bardziej oczywistego i kulturalnego języka :)
A co sądzisz o takiej filtracji jest wystarczająca? nic nie pożądanego nie powinno tutaj wejść tak mi sięnajwyżej wydaje :)
komentarz 21 kwietnia 2015 przez Boshi VIP (100,240 p.)
Za dużo oraz bra real_escape.

przesiądź się na pdo.
komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
Dzięki za podpowiedź przejrzałem poglądowo PDO na wikipedii

http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO

i wydaje się do ogarnięcia :)
komentarz 21 kwietnia 2015 przez Boshi VIP (100,240 p.)
Jest proste.
0 głosów
odpowiedź 21 kwietnia 2015 przez niezalogowany
Po co tyle gwiazdek w zapytaniu? Ja zawsze używam jednej, czy to źle?
komentarz 21 kwietnia 2015 przez Boshi VIP (100,240 p.)
Czytaj co autor napisał.
komentarz 21 kwietnia 2015 przez niezalogowany
Przeczytałem, że nie chce żeby nazwy gdzieś wyciekły, ale nadal nie rozumiem co to da.
komentarz 21 kwietnia 2015 przez Boshi VIP (100,240 p.)
Generalnie to nic nie powinno, ale jeżeli ktoś by przeglądnął tą stronę a on wystawił na zewnętrzny świat już  swoje dzieło, to  jak by nie patrzył  potencjalny agresor ma nazwy tabel i cały kod zabezpieczający- wie jakie są luki,
komentarz 21 kwietnia 2015 przez makoso Mądrala (7,380 p.)
faktycznie źle zrozumiałeś te gwiazdki chodziło o to abyś np Ty nie dowiedział sięjakie mam nazwy tabel taki tam + do bezpieczeństwa pytanie nie dotyczyło gwiazdek tylko ogólnego wyglądu kodu :) jakoś uwazam że nie powinno się podawać swoich nazw publicznie a niektórzy tak robia później podając nawet adres swojej strony a co wtedy jeżeli ma jakąś banalną lukę tak jak napisał kolega wyżej trafi na takiego co go nie poinformuje a ro***** mu cały projekt....

Podobne pytania

0 głosów
1 odpowiedź 383 wizyt
pytanie zadane 2 kwietnia 2018 w PHP przez Kamil110501 Bywalec (2,490 p.)
0 głosów
0 odpowiedzi 437 wizyt
pytanie zadane 2 lipca 2018 w PHP przez aleksander_szut Użytkownik (940 p.)
0 głosów
1 odpowiedź 539 wizyt
pytanie zadane 23 czerwca 2018 w C i C++ przez magmat Początkujący (390 p.)

92,575 zapytań

141,424 odpowiedzi

319,650 komentarzy

61,961 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!

...