У меня есть textarea, значение которого будет вставлено в базу данных mysql. Чтобы защитить от инъекции mysql, обрабатываю ли я вход через nl2br, mysql_real_escape_string, htmlentities или комбинацию из 2 или всех 3? В каком порядке я обрабатываю данные?Текстовая защита от mysql injection- PHP
ответ
nl2br
в основном преобразует все "\n"
в "<br/>"
, так что я не вижу, как это помогает с SQL Injection (не mysql injection btw)
mysql_real_escape_string
обычно используется для такого рода thi нг.
htmlentities
используется для предотвращения неудач, когда пользователи вводят злоумышленник <script>
на ваш сайт, если вы разрешаете вводить пользователя. Обратите внимание, что обычно принято хранить строку как есть и вызывать только htmlentities
всякий раз, когда вы выводите свою строку
Вам нужно знать, что делает каждое из указанных выше, и использовать их только тогда, когда вам это нужно, а не комбинировать их, поскольку они может ухудшить ситуацию.
Еще лучше и более безопасная альтернатива для обеспечения безопасности базы данных является использование mysqli
http://sg.php.net/mysqli, он предоставляет подготовленное заявление, чтобы помочь вам отфильтровать ваш SQL
Это неверное описание. 'mysqli' не« автоматически »фильтрует sql. Вы должны использовать специально подготовленные заявления. Было бы очень легко построить запрос с инжекцией в 'mysqli' (или любая обертка DB, используемая ненадлежащим образом). –
@tandu, что лучше? –
Да, я так думаю. –
Если вы используете подготовленные операторы с PDO или mysqli, тогда вы просто связываете этот параметр. Если используется старое расширение mysql, вы должны использовать mysql_real_escape_string()
.
только обработки вам нужно при вставке является mysql_real_escape_string
, но предпочтительно использовать подготовленные заявления, возможно, с PDO
или MDB2
.
Никогда хранить закодированные данные в базе данных. Вы всегда должны хранить необработанные данные. То есть, не используйте nl2br
или htmlentities
для хранения. Однако вы должны использовать его для отображения , если данные будут вставлены в DOM (nl2br
чисто визуально, htmlentities
поможет защитить от XSS). Также обратите внимание, что htmlspecialchars
может быть предпочтительнее в зависимости от того, как вы хотите обрабатывать дисплей - этого должно быть достаточно для базовой защиты XSS.
Запомните эту мантру:
- побег для хранения
- Encode для отображения
- 1. Защита PHP от инъекций MySQL
- 2. Защита статического SQL-запроса от SQL Injection
- 3. Защита от SQL tablename injection - насколько далеко?
- 4. PHP Защитите запрос от mysql Injection.
- 5. MySQL Injection от LIKE оператора
- 6. PHP MySQL Injection
- 7. sql защита от инъекций?
- 8. Десятичная защита php mysql
- 9. Защита кода PHP MySQL
- 10. Защита от SQL-инъекции
- 11. Защита от проникновения SQL Injection: где я начинаю
- 12. PHP ЗАЩИТА SQL-ВПРЫСКА
- 13. Защита системы опроса PHP/MySQL
- 14. Защита переменных от кражи в php
- 15. Защита сервера PHP от угонщика
- 16. Специальная защита от расширения PHP
- 17. Защита от удержания сеанса PHP
- 18. Защита файлового менеджера PHP от его пользователей
- 19. PHP vs NodeJS - текстовая RPG
- 20. MySQL INJECTION Solution
- 21. PHP-защита загрузок
- 22. Администрирование журнала MySQL - защита от разработчиков
- 23. Защита таблиц MYSQL от неподходящего доступа
- 24. Текстовая корреляция в MySQL
- 25. Защита от XSS
- 26. MySQL Entity Injection
- 27. Защита от веб-доступа
- 28. mysql is_numeric sql injection
- 29. Защита от csrf
- 30. Защита паролем с использованием PHP и MySQL
Защита от инъекции SQL уже хорошо укрытым повсюду. Вы также можете рассмотреть подготовленные заявления. – GordonM