1

Тема: sql инекции итд

Конечно в инете много тем на этот повод, но хотелось бы услышать всё сразу и применимо к движку)
например как же правильно следить за соответствием типа данных?
когда у нас числа это понятно и просто, а вот когда начинаем слать всё подряд, особенно когда это всёподряд нужно как тогда?
как я понял, надурить $this->db->where($key,$val); не составит труда...
думал о универсальном костраторе, и вроде как что-то наклюнулось... как считаете можно использовать serialize() в таких случаях? может есть какие-то особенности, либо у фреймворка всё же и на этот каверзный вопрос есть простой ответ...
спасибо...

Thumbs up +1 Thumbs down

2

Re: sql инекции итд

Есть много способов фильтрации данных:
например: mysql_real_escape_string()
Хотя это не лучший метод многие применяя эту функцию думают что защитили сайт, но это не так!
у codeigniter тоже много функций для фильтрации данных например от XSS атак и тому подобных.
Лучше всего просто использовать функции для экранирования кавычек.
Например addslashes но и mysql_real_escape_string тоже подойдет.
Но лучше всего по крайней мере я использую эту вещь называется htmlspecialchars() у нее два параметра. Подробно прочитать можно тут - http://www.php.su/functions/?htmlspecialchars
При чтении из бд нужно будет только раздэкодировать ее функцией htmlspecialchars_decode
Так же я думаю можно применить base64.
Но лично я использую htmlspecialchars

Thumbs up +2 Thumbs down

3

Re: sql инекции итд

В принципе $this->db->where($key,$val); сам все заэкранирует, проверить это можно выполнив echo $this->db->last_query(); то есть попробуйте выполните запрос с кавычками и так далее. он должен сам все заэкранирует, если все это произойдет, то можно не парится по поводу sql атака

Thumbs up Thumbs down

4

Re: sql инекции итд

blud пишет:

В принципе $this->db->where($key,$val); сам все заэкранирует, проверить это можно выполнив echo $this->db->last_query(); то есть попробуйте выполните запрос с кавычками и так далее. он должен сам все заэкранирует, если все это произойдет, то можно не парится по поводу sql атака

вынужден несогласиться, начиная работу с движком, понятия не имел о фреймворке и его функциях по этому имел всё что попадалось под руку, и первые мои "потуги" программирования с использованием $this->db->where($x,$y); были ничем иным как "обдуриванием" функции с целью НЕ только просто указать условие... что и есть инекция, интересные особенности когда он включает а когда выключает кавычки... готов поспорить, что эту функцию можно "ломануть" если надеяться на то, что она сэкранирует все ненужные символы....

Thumbs up Thumbs down