Самый безопасный способ принять пользовательский ввод, положить его в базу данных, и выводить его с помощью php
Это самая запутанная часть, с которой я столкнулся сегодня, я использую codeigniter, но это фильтр xss, кажется, не работает должным образом, как мы ожидаем, поэтому мы попытались использовать htmlentities при сохранении данных в базу данных, но я где-то читал, мы никогда не следует изменять / редактировать введенные пользователем данные в базу данных, мы всегда должны делать это при выводе данных в браузере, поэтому здесь я полностью сбит с толку тем, что было бы самым безопасным и наилучшим способом получения пользовательского ввода, сохранения в базе данных и вывода этих данных. используя php
2 ответа
Что вы ожидали от фильтрации CI XSS, что, по вашему мнению, она не работает должным образом?
Чтобы ответить на ваши вопросы, выполните следующие действия:
Сначала проверяйте введенные пользователем данные (и прежде чем что-либо делать с ними) вместо того, чтобы фильтровать и исправлять их, сделайте это с помощью CodeIgniter
Form Validation Class
Ссылка на руководство: https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html
Для запросов к вашей базе данных используйте CodeIgniter
Active Record Class
все данные экранируются автоматическинапример
$this->db->insert('mytable', $data);
Ссылка на руководство: https://ellislab.com/codeigniter/user-guide/database/active_record.html
Для вывода пользовательских вводимых данных из базы данных или где-либо еще используйте CodeIgniter
html_escape()
функция
Тебе хорошо идти...
P.S. Links were for version 2.2, if you're using version 3, routine is the same but simply find the guide on codeigniter.com
Это зависит от вашего намерения. Когда кто-то, не зная о вашем проекте, говорит вам, что вы никогда не должны изменять ввод пользователя, тогда он или она - bullsh1tt1ng. Вы должны задать себе правильные вопросы:
- я хочу защитить от xss при сохранении данных или при загрузке данных?
- как на UX будут влиять изменения пользовательского ввода? Есть ли проблемы? Есть ли автоматическое исправление?
- если я защищаю от xss при показе, есть ли вероятность забыть о каком-либо месте? Если так, есть ли способ нейтрализовать эту потенциальную утечку безопасности?
Но самое главное, ваш вопрос должен звучать так:существует ли какая-либо действительная потенциальная причина, которая могла бы подтвердить попытку пользователя ввести сценарии?