SQL-инъекция и XSS - две разные (хотя и несколько связанные) атаки. Они связаны с тем, что, по сути, это сводится к тому, что ненадежные данные выходят из контекста, в который они помещены, и впоследствии выполняют непредвиденные операции.
Для ознакомления с лучшими практиками построения защиты я рекомендую ознакомиться с OWASP Шпаргалка по предотвращению инъекций SQL и их Шпаргалка по профилактике XSS .
OWASP выдвинул ESAPI Project , который включает в себя инструменты для кодирования для различных контекстов, в которых могут использоваться ненадежные данные:
- encodeForSQL
- encodeForHTML
- encodeForHTMLAttribute
- encodeForJavaScript
- encodeForCSS
- encodeForURL
Эта библиотека доступна для ряда языков, включая Java, .NET, PHP , Classic ASP, Cold Fusion, Python и Haskell. Он также может выполнять проверку ввода, если это необходимо.
Некоторые организации, использующие ESAPI, включают American Express, Apache Foundation, Booz Allen Hamilton, Aspect Security, Foundstone (McAfee), Hartford, Infinite Campus, Lockheed Martin, MITER, ВМС США - SPAWAR, Всемирный банк, Институт SANS ,
И наконец - кодирование должно выполняться непосредственно перед интерпретацией (чем ближе, тем лучше). Пример: Непосредственно перед тем, как дать компоненту UI ненадежные данные для их кодирования. Компонент пользовательского интерфейса не может доверять серверу - он должен кодировать.