2016-06-18 7 views
0

Я закончил одно приложение, но пока разработчики не проверяли о SQL-инъекциях и теперь в конце, мне нужно исправить эту небольшую проблему.Codeigniter php: SQL-инъекция предотвращает

Вот мой код, как я могу проще всего исправить это, чтобы предотвратить внедрение sql (есть ли какая-либо функция только для форматирования моего имени пользователя, параметров пароля, а не для изменения моего кода).

public function getArtistByUsernameByPassword($username, $password) { 
    $query = $this->db->query("SELECT * FROM artists WHERE username = '$username' AND password = ' $password'"); 
    if ($query->num_rows() > 0) { 
     return $query->row_array(); 
    } 
    return null; 
} 

Заранее благодарен!

ответ

1

Использование Codeigniter-х query builder class.

Таким образом, ваш код будет выглядеть так.

$query = $this->db->get_where('artists', array('username' => $username, 'password' => $password)); 
+0

Более "слащавый" синтаксис будет $ this-> db-> с -> ('художники') -> где ('имя пользователя', $ имя пользователя) -> где ('пароль', $ пароль) -> Get(); –

+0

Вы также можете добавить ограничение на запрос, если этот запрос предназначен для аутентификации. –

0

db->escape() Использование и db->escapestr() функции, чтобы избежать SQL Injection ...