Я столкнулся с проблемой. Написал следующий фрагмент кода:
teksti = teksti.Trim()
teksti = Replace(teksti, "<", "& lt;")
teksti = Replace(teksti, ">", "& gt;")
teksti = Replace(teksti, """", "& quot;")
teksti = Replace(teksti, "'", "& #8217;")
teksti = Replace(teksti, "%", "& #37;")
teksti = Replace(teksti, "&", "& amp;")
teksti = Replace(teksti, "#", "& #35;")
teksti = Replace(teksti, "@", "& #64;")
После написания этого я понял, что это становится его собственной проблемой. Предполагается, что функция делает информацию безопасной для внедрения HTML и SQL (есть и другие методы, параметризованные запросы и т. Д., Но это не относится к делу). Однако, что происходит, так это то, что сначала он заменяет <
на & lt;
, а затем снова заменяет вновь записанную строку, так как каждая строка замены имеет &, # и; знаки в нем.
Есть намеки? Я думал об использовании регулярных выражений для этого, но я не смог найти достойных примеров Visual Basic, которые были бы достаточно простыми.
Редактировать: Спасибо за советы. Я был уверен, что будет «умный» простой способ сделать это, но я думаю, что в конце концов нет общих методов. Перестановка проблемных случаев в первую очередь является очевидным решением, спасибо за это. Я думаю, что рабочий день был слишком длинным, чтобы я мог заметить. : D
Что касается параметризованных запросов, то при проверке я вижу, что мой английский выходит не так, как предполагалось. Я хотел сказать, что я уже использую их, что эта проблема здесь специфическая, чтобы предотвратить всевозможные html-инъекции и возможные sql-инъекции, используя те же строки в другом месте позже. Еще раз спасибо за помощь.