Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 0 Dołączył: 24.10.2008 Skąd: Częstochowa Ostrzeżenie: (0%)
|
Mam problem ponieważ napisałem klasę wszystko ok, ale nie mam pojecia jak dodać np. addslashes?
Oto klasa:
kombinowałem tak żeby w tej lini:
dodać addslashes tak:
ale nie działa... Jak to rozwiązać, żeby zapytanie automatycznie było zabezpieczone, żebym nie musiał rozkminiać podczas pisania aplikacji o zabezpieczeniu. Ten post edytował DonJeday 3.11.2008, 17:53:47 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 28.09.2007 Skąd: Gdynia Ostrzeżenie: (0%)
|
PDO ma swoje minusy (wydaje mi się, że nie ma wszystkich typowych dla MySQL opcji).
Ale może niedobrze uczyć się kododawania MySQL-specific? Heh, w takim układzie, w ogóle czemu PHP, są inne języki, nie będę pokazywał palcem... Ale używanie MySQL bez MySQLi ? Bezcelowe. MySQLi ma swoje ograniczenia, i owszem, ale jeśli już coś rozszerzać, to właśnie MySQLi aż się prosi o rozszerzenie. Oczywiście bez sensu dopisywać do niego już istniejącą funkcjonalność, ale są ciekawsze sposoby rozszerzania. Mój lib na przykład implementuje interfejs Countable i Iterator, co pozwala na całkiem przyjemne posługiwanie się zapytaniami w kodzie: foreach (db::$cc->query('select * from my_table') as $n => $record) { ... } Ale do takiego skrótu potrzebna jest opcja, w jakiej postaci mają być zwracane rzędy wyniku, u mnie defaultowo zwraca jako obiekty, ale można przełączyć na coś innego. Co do zabezpieczania, to oczywiście mysqli::real_escape_string(). Podobno prawidłowe działanie tej funkcji wymaga ustawienia locale: @setlocale('LC_ALL', 'pl_PL.UTF-8'); Jeśli oczywiście używasz UTF-8. Jeśli czegoś innego, ustawiasz na coś innego. Żeby nie musieć PAMIĘTAĆ o escapowaniu każdego stringa zapodawanego do zapytania, w kodzie inicjującym swoją aplikację zrobiłem escapowanie tablic $_GET, $_POST i $_REQUEST. Tak na wszelki wypadek. Działa. Po włączeniu tego injecty do bazy już mi nie przechodziły (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) O co jeszcze rozszerzam MySQLi? Na przykład poprawiam buga w odczycie wartości pól bitowych. Jeśli sprawdzisz je na true albo false to się zdziwisz. Nie zawierają nawet 0 ani 1. Próba "podglądnięcia" co takiego zwraca php dla takich pól zwróci dziwne rzeczy. A tak na prawdę to chr(0) i chr(1). "Bez sęsu", prawda? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Co jeszcze się przydaje? Lepsza obsługa wartości typu set i enum, funkcje kopiowania i przenoszenia tabel, tworzenia widoków, importowania i eksportowania danych... Ale nie będę wklejał kodu, toż to sama przyjemność sobie to napisać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A co do tematu zabezpieczania, niech Ci tylko do głowy nie strzeli sprawdzać każdego zapytania przed wysłaniem! TO JEST ZŁE, bo po co sprawdzać coś za każdym wywołaniem funkcji, co może być sprawdzone JEDNORAZOWO, przy uruchomieniu. |
|
|
|
DonJeday Zabezpieczenie zapytań, klasa 3.11.2008, 17:36:41
bartg Moja klasa (przypasowana w frameworka):
http://php... 3.11.2008, 18:07:50
empathon I powiedź mi po co powielasz funkcjonalność już ob... 3.11.2008, 18:09:00
DonJeday Bo się uczę programowania obiektowego, wale te pro... 3.11.2008, 18:14:54 
empathon Cytat(DonJeday @ 3.11.2008, 18:14:54 ... 3.11.2008, 19:18:37
mike Przenoszę z Programowanie obiektowe na PHP 3.11.2008, 20:03:10
DonJeday empathon, z tego co się orientuję to do PDO potrze... 3.11.2008, 21:07:10
bełdzio 1. dodaj kolejna funkcje ktorej zadaniem bedzie ... 3.11.2008, 21:11:44 
DonJeday Cytat(bełdzio @ 3.11.2008, 21:11... 3.11.2008, 21:29:35
bełdzio skoro robisz klase do zabawy z SQL to w niej powin... 3.11.2008, 22:18:11 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 09:07 |