LolikZabójca Opublikowano 14 Października 2019 Udostępnij Opublikowano 14 Października 2019 PROBLEM ROZIĄZANY Mam taki oto kod. Dostaję błąd "Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /usr/home/panelvps/domains/panelvps.usermd.net/public_html/php/change_converters_do.php on line 23". O co może chodzić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Października 2019 Udostępnij Opublikowano 14 Października 2019 Niepoprawnie odnosisz się do klucza w tablicy, nie powinno tam być tych pojedynczych cudzysłowów ', poprawnie to powinno wyglądać tak: $inputs = [ "lvalue" => 5, "rvalue" => 10 ]; $solutions = [0, 15, 30]; $string = "$inputs[lvalue] + $inputs[rvalue] = $solutions[1]" Dodatkowo nie buduj tak zapytań :facepalm: chociaż użyj prostej funkcji jak mysql_real_escape_string Najlepiej będzie jak przerzucisz się na PDO i będziesz robił parametryzowane zapytania. np. https://www.php.net/manual/en/pdo.prepare.php Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabójca Opublikowano 14 Października 2019 Autor Udostępnij Opublikowano 14 Października 2019 12 minut temu, Konrad-GM napisał: Niepoprawnie odnosisz się do klucza w tablicy, nie powinno tam być tych pojedynczych cudzysłowów ', poprawnie to powinno wyglądać tak: $inputs = [ "lvalue" => 5, "rvalue" => 10 ]; $solutions = [0, 15, 30]; $string = "$inputs[lvalue] + $inputs[rvalue] = $solutions[1]" Dodatkowo nie buduj tak zapytań :facepalm: chociaż użyj prostej funkcji jak mysql_real_escape_string Najlepiej będzie jak przerzucisz się na PDO i będziesz robił parametryzowane zapytania. np. https://www.php.net/manual/en/pdo.prepare.php Działa takie odnoszenie się do elementów tablic. Korzystam z PDO ale po co mam sobie robić pod górkę? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Października 2019 Udostępnij Opublikowano 14 Października 2019 9 minut temu, LolikZabójca napisał: Działa takie odnoszenie się do elementów tablic. Korzystam z PDO ale po co mam sobie robić pod górkę? Żeby się nauczyć, ot. Nabywasz teraz złej praktyki po prostu (i do tego zwyczajnie niebezpiecznej ) . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabójca Opublikowano 14 Października 2019 Autor Udostępnij Opublikowano 14 Października 2019 5 minut temu, Konrad-GM napisał: Żeby się nauczyć, ot. Nabywasz teraz złej praktyki po prostu (i do tego zwyczajnie niebezpiecznej ) . Co w niej niebezpiecznego? Z tego co słyszałem lepiej nie używać emulowanego PDO, bo to może powodować niebezpieczeństwo w razie znalezienia backdoora, a lepiej używać starego, sprawdzonego filter_var który się wysypać nie może Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Października 2019 Udostępnij Opublikowano 14 Października 2019 18 minut temu, LolikZabójca napisał: Co w niej niebezpiecznego? Z tego co słyszałem lepiej nie używać emulowanego PDO, bo to może powodować niebezpieczeństwo w razie znalezienia backdoora, a lepiej używać starego, sprawdzonego filter_var który się wysypać nie może W tym wypadku zapewne nie, ale jak będziesz nawet przypadkiem wrzucał tam $_POST czy $_GET, to zwykłe niedopatrzenie może spowodować sporo problemów. A ten błąd zapewne o którym słyszałeś, to o niewłaściwym kodowaniu bazy danych, tutaj masz rozwiązanie: https://stackoverflow.com/a/12202218 Cytuj "utf8mb4 is not vulnerable and yet can support every Unicode character" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabójca Opublikowano 15 Października 2019 Autor Udostępnij Opublikowano 15 Października 2019 Dlaczego niby? Skoro traktuje zmienne filter_var to czemu get, albo post miałby stanowić problem? Nie, ogólnie Zelent o tym mówił, że emulacja w PDO się ciągle rozwija i zawsze może ktoś znaleźć jakiś backdoor i lepiej go nie używać tej wbudowanej emulacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 15 Października 2019 Udostępnij Opublikowano 15 Października 2019 44 minuty temu, LolikZabójca napisał: Dlaczego niby? Skoro traktuje zmienne filter_var to czemu get, albo post miałby stanowić problem? Nie, ogólnie Zelent o tym mówił, że emulacja w PDO się ciągle rozwija i zawsze może ktoś znaleźć jakiś backdoor i lepiej go nie używać tej wbudowanej emulacji. Przecież Ci wyżej podesłałem link jak ten błąd wygląda z PDO. Backdoor to nie tylko nieumiejętne korzystanie z PDO. To chociaż użyj parametryzacji z mysqli:https://www.php.net/manual/en/mysqli.prepare.php Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabójca Opublikowano 16 Października 2019 Autor Udostępnij Opublikowano 16 Października 2019 Dnia 15.10.2019 o 14:44, Konrad-GM napisał: Przecież Ci wyżej podesłałem link jak ten błąd wygląda z PDO. Backdoor to nie tylko nieumiejętne korzystanie z PDO. To chociaż użyj parametryzacji z mysqli:https://www.php.net/manual/en/mysqli.prepare.php Nie o to chodzi. Tylko o to, że filter_var jest sprawdzony przez lata a w PDO może okazać się że znajdzie ktoś nowy backdoor. Korzystam z PDO, ale wysyłam zapytania normalnie. Tak jest wszędzie też na stackflow i nikt nie narzeka. Co jest złego w filter_var, bo o to pytam? używam: $stmt = $mysql_pdo_object->prepare($sql_query); $stmt->execute(); Wcześniej sprawdzając posty filter_varem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 16 Października 2019 Udostępnij Opublikowano 16 Października 2019 Nic złego nie jest w filter_var, ale w sposobie w jaki budujesz zapytania. "SELECT * FROM table WHERE x = $y" nawet jak używasz filter_var, to łatwo błąd popełnić. Dlatego też wymyślono coś takiego jak parametryzacja w mysqli->prepare, czy PDO->prepare, a Twój argument "może okazać się że znajdzie ktoś nowy backdoor" jest po prostu głupi, bo równie dobrze błąd może dotyczyć mysqli, czy nawet serwera apache/nginx... Dużo łatwiej złapać się na SQL Injection Twoją metodą niż używając parametryzacji i PDO. A tak w ogóle to nie uchronisz się w 100% przed błędami, aktualizuj serwer i tyle. PS. ten błąd PDO dotyczył biblioteki mysql akurat, bo wewnętrznie używa funkcji "mysql_real_escape_string"... Chell 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabójca Opublikowano 16 Października 2019 Autor Udostępnij Opublikowano 16 Października 2019 6 godzin temu, Konrad-GM napisał: Nic złego nie jest w filter_var, ale w sposobie w jaki budujesz zapytania. "SELECT * FROM table WHERE x = $y" nawet jak używasz filter_var, to łatwo błąd popełnić. Dlatego też wymyślono coś takiego jak parametryzacja w mysqli->prepare, czy PDO->prepare, a Twój argument "może okazać się że znajdzie ktoś nowy backdoor" jest po prostu głupi, bo równie dobrze błąd może dotyczyć mysqli, czy nawet serwera apache/nginx... Dużo łatwiej złapać się na SQL Injection Twoją metodą niż używając parametryzacji i PDO. A tak w ogóle to nie uchronisz się w 100% przed błędami, aktualizuj serwer i tyle. PS. ten błąd PDO dotyczył biblioteki mysql akurat, bo wewnętrznie używa funkcji "mysql_real_escape_string"... Ale podaj przykład jak może to zaszkodzić. "Łatwo o błąd" ale nie słyszałem o tym żeby ktoś miał przez to problem, że używa filter_var. Używam prepare $stmt = $mysql_pdo_object->prepare($sql_query); $stmt->execute(); Czy chodzi o inny sposób użycia? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 16 Października 2019 Udostępnij Opublikowano 16 Października 2019 No do pisania pluginów w wordpressie w zupełności wystarczy, powodzenia. Chell i gnysek 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Października 2019 Administratorzy Udostępnij Opublikowano 17 Października 2019 Polecam znaleźć info o dowolnym SQL Injection do dowolnego pluginu do WP i zrobisz wielkie oczy, że takie coś przeszło i udało się włamać i przy okazji zrozumiesz, jak zaawansowanych i nietypowych sposobów używa sie do włamania. Tu nie chodzi o powstrzymanie dopisania przez kogoś znaczka ' czy " w parametrze GET/POST, tylko o naprawdę znacznie bardziej wyrafinowane dziury Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się