Бесконечное количество раз уже упоминалось в интернете о том, что все строковые параметры, особенно те, что приходят от пользователя, не только желательно, но и даже обязательно нужно экранировать при использовании в SQL запросах.
Однако снова и снова открываешь какой-нибудь энтерпрайз проект и видишь что то наподобие этого:
CString sql = "SELECT * FROM categories WHERE category = '" + category + "'";
где category
никем не проверяемая и неэкранированная переменная, которую создают прямиком из введённых пользователем данных.
Ведь практически каждая современная СУБД позволяет через свой API либо автоматически, во время подготовки запроса(prepared statements), либо в ручную, вызвав спец. метод экранировать такие строки. Но нет, кто-то продолжает писать код на коленке, когда надо по быстрому сдать проект. По моему надо учить обработке пользовательских данных буквально на любом курсе программирования, что бы потом это было на уровне рефлексов. А не так как сейчас, где некоторые темы на курсах совсем не затрагиваются или обращается мало внимания на качество кода.