Nano Hash - криптовалюты, майнинг, программирование

Любая возможная уязвимость SQL-инъекций при использовании активной записи codeigniter?

Ниже приведен код, который я использую в своем проекте Codeigniter для входа в систему с правами администратора.

public function login()
{
    $usename = $this->input->post('username');
    $password = $this->input->post('password');

    $this->db->where('username', $username);
    $this->db->where('password', MD5($password));
    $this->db->limit(1);
    $query = $this->db->get('user');

    if($query->num_rows() == 1)
        return true; // login the user
    else
        return false; // user not found
}

Когда запрос повторяется

echo $this->db->last_query();

он выводит что-то вроде этого:

SELECT * FROM (`user`) WHERE `username` = 'admin' 
    AND `password` = '5f4dcc3b5aa765d61d8327deb882cf99' LIMIT 1

Теперь, когда я ввожу пароль как value)'; DROP TABLE user;--, создается запрос: -

SELECT * FROM (`user`) WHERE `username` = 'admin' 
    AND `password` = 'c0b24ab68e0f79e23ebec36e36a5309f' LIMIT 1

Так что я думаю, что это в значительной степени безопасно от sql injection, потому что codeigniter active record автоматически экранирует входные данные.

Изменить на основе комментария

Теперь имя пользователя вводится с чем-то вроде этого username'; DROP TABLE user;--, затем создается запрос

SELECT * FROM (`user`) WHERE `username` = 'username\'; DROP TABLE user;--' 
    AND `password` = '5f4dcc3b5aa765d61d8327deb882cf99' LIMIT 1 

Так что я думаю, что это убегает и в этом случае.

Но мой вопрос заключается в том, действительно ли приведенного выше кода достаточно для предотвращения всех возможных атак путем внедрения SQL?


  • В этом случае это безопасно, потому что вы хэшируете ввод. Кроме того, CI может или не может правильно экранировать значения, но это не основная причина, по которой он безопасен в этом случае. 11.04.2016
  • Вы пытались добавить волшебство таблицы перетаскивания в поле имени пользователя? Что происходит с этим запросом? 11.04.2016
  • @EatPeanutButter Это действительно портит запрос. Я не проверял это. :) 11.04.2016
  • @EatPeanutButter Я думаю, что и в этом случае он убегает. Пожалуйста, проверьте редактирование 11.04.2016
  • Это дает вам больше информации о том, как CI работает за кулисами. Вы также должны прочитать это: stackoverflow.com/ вопросы/1615792/ 11.04.2016

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..