![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam pytanie odnośnie PDO.
Czy w obecnej chwili jest możliwe jakieś wstrzyknięcie SQL przy np. takim kodzie:
Wcześniej korzystałem z mysqli, ale przeczytałem, że PDO jest nowszą technologią, która posiada dodatkowe zabezpieczenia np. przed wstrzykiwaniem SQL. Tak jak pisałem na początku moje pytanie brzmi czy jest to w 100% bezpieczne? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
tak, jest możliwe wstrzyknięcie sql. Używaj bindowania. http://php.net/manual/en/pdostatement.bindparam.php
Ten post edytował kapslokk 20.05.2016, 20:40:09 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
tak, jest możliwe wstrzyknięcie sql. Używaj bindowania. http://php.net/manual/en/pdostatement.bindparam.php Rozumiem. Czy jest wtedy sens przeskakiwania na PDO czy można zostać przy mysqli? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeśli dopiero zaczynasz pisanie aplikacji, to chyba lepiej użyć PDO, w razie potrzeby łatwiej będzie Ci zmienić bazę danych, mysqli jest tylko do mysql'a. Jeżeli musisz przepisywać dużą część aplikacji to już Twoja decyzja
![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi raczej tylko o bezpieczeństwo.
W mysqli zamieniałem ciąg znaków na base64 a przy wyświetlaniu rekordów na stronie po prostu je odkodowywałem i to było moje zabezpieczenie przed wstrzykiwaniem sql. Myślałem, że PDO chroni przed jakimkolwiek wstrzyknięciem, ale jeżeli nie to chyba nie ma sensu przechodzić na PDO. Jeszcze jedno pytanie przeczytałem na jakimś forum, że w PHP 7.0 mysqli oraz mysql mają być usunięte i ma zostać samo PDO czy to prawda? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Myślałem, że PDO chroni przed jakimkolwiek wstrzyknięciem, ale jeżeli nie to chyba nie ma sensu przechodzić na PDO. Chroni, pod warunkiem, że używasz bindowania. Mysqli też ma bindowanie: http://php.net/manual/en/mysqli-stmt.bind-param.php Co do tego base64 to nie wiem jakby to miało w czymkolwiek pomóc. A co do PHP7 to mysql_ zostało usunięte, ale mysqli nadal jest. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi mniej więcej o coś takiego, że wszystkie dane ktore wpisuje user zostają zamienione na base64 (przykład wyżej). Czy nadal jest możliwe wstrzyknięcie SQL? Ten post edytował vento 20.05.2016, 21:03:37 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hahaha, no nie jest możliwe, ale to nie jest optymalne rozwiązanie
![]() ![]() Poza tym, już lepiej robić wszedzie: http://php.net/manual/en/mysqli.real-escape-string.php niż base64_encode ![]() ![]() Ten post edytował kapslokk 20.05.2016, 21:08:56 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem. Dziękuje za pomoc.
Rozumiem, że teraz wszystko jest bezpieczne? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tak.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie jest! A czemu, to najlepiej wyjaśnia ta odpowiedź na SO: http://stackoverflow.com/a/8255054/5778385
Jedyny dobry sposób to PS: http://stackoverflow.com/a/60496/5778385 -------------------- ★Mój blog || Okiem krytyka★
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
kapslokk ale nie pisz bazdur jakiekolwiek *_real_escape_string, nie chroni przed niczym, to się używało w mysql_* bo tylko to tam było, ale dlatego ten sposób już umarł
![]() ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No dobra, moja wina, szczerze mówiąc nawet nie wiedziałem
![]() |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Może mi ktoś napisać przykład jak dodać bezpiecznie komentarz, aby nie było możliwe wstrzyknięcie sql dla mysqli
Póki co mam coś takiego:
Z góry dziękuję za pomoc.. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Jak użyjesz PDO to zapytanie będzie proste:
mysqli_real_escape_string jest wtedy zbędne i usuwasz z kodu. Jeżeli nie planujesz mieć skomplikowanych zapytań lub tabele będziesz miał referencyjne, to możesz użyć już klas ułatwiające otrzymywanie wyników, aktualizację i dodawanie treści do bazy danych np. klasę: http://www.phpclasses.org/package/9209-PHP...tml#information Dla przykładu:
Ten post edytował Tomplus 24.05.2016, 06:22:46 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, dziękuję za pomoc będę korzystał z PDO
Tak też może być? |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
wywalisz małpę dodasz if z isset i będzie ok
![]() |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 17.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Teraz ok? Ten post edytował vento 24.05.2016, 18:01:06 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, dziękuję za pomoc będę korzystał z PDO Po czym korzystasz z mysqli ![]() Zamiast tych ifów poczytaj o wyjątkach. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:56 |