Как показали другие, mysql_real_escape_string()
можно обойти в неясных крайних случаях . Это одна из известных стратегий обхода логики выхода, но могут быть и другие неизвестные уязвимости, которые еще не были обнаружены.
Простой и эффективный способ предотвратить внедрение SQL в PHP - это использовать подготовленные операторы , где вы можете, и очень строгий белый список, где вы можете т.
Подготовленные операторы, когда они фактически используются и не эмулируются драйвером PDO, надежно защищены (по крайней мере, в отношении внедрения SQL), поскольку они решают фундаментальную проблему безопасности приложения: они разделяют данные из инструкций , которые оперируют данными. Они отправляются в отдельных пакетах; параметризованные значения никогда не могут испортить строку запроса.
Это 2015 год. Не убегай и не соединяй больше. Вы все равно должны проверять свои входные данные в соответствии с логикой приложения (и бизнес-логики), а просто использовать подготовленные утверждения.