Разрешить определенные символы быть невосприимчивыми к кодировщику ESAPI?

Я пытаюсь включить кодировщик ESAPI в свое приложение JavaEE и хочу, чтобы он не кодировал определенный набор символов, например '‹', '!', '(', ')'.

Я прочитал документацию https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/Encoder.html, что «все символы должны быть закодированы, за исключением определенного списка «иммунных " персонажи".

Я хотел бы знать, где и как я могу настроить этот конкретный список «невосприимчивых» персонажей. Будет ли это в файле ESAPI.properties?


person Mingxuan He    schedule 22.11.2018    source источник
comment
Полностью согласен с ответом Кевина ниже. Некоторые из символов, которые, как вы говорите, вы хотите защитить, являются известными символами, которые используются во многих языках программирования, и создание таких символов, в частности, невосприимчивых, вызывает внедрение кода в ваше приложение. Что вы на самом деле пытаетесь сделать, что, по вашему мнению, иммунитет является ответом? Здесь пахнет кодом, и воняет.   -  person avgvstvs    schedule 24.11.2018


Ответы (1)


Простой ответ: вы не можете. Или, по крайней мере, не легко. Это можно сделать, изменив строку в ESAPI.properties с:

ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder

к чему-то вроде

ESAPI.Encoder=com.MyCompany.myApp.MyEncoder

а затем в MyEncoder.java, заменив одну или несколько инициализаций различных IMMUNE_* переменных ESAPI своими собственными. Но это единственный способ сделать это. Нет никакого метода или свойства, чтобы переопределить это, потому что в общем случае вы никогда не должны этого делать. (Было [плохое, IMO] дизайнерское решение сделать все эталонные реализации ESAPI одноэлементными, поэтому предоставление такого метода классу DefaultEncoder означало бы, что вы изменили бы его для всех экземпляров класса, и это кажется слишком опасным.)

Поэтому вместо того, чтобы отвечать на ваш вопрос, как я, я должен спросить вас, почему вы хотите это сделать? Недавно к кодеку IMMUNE_CSS был добавлен символ «#» (в настоящее время только в ветке «develop» на GitHub), но даже это не было сделано без обширного обсуждения между нынешними и бывшими руководителями проекта OWASP. Иммунные списки разумно выбраны, чтобы быть «безопасными» во всех известных случаях. Then не предназначены для применения только в некоторых пограничных случаях, которые считаются безопасными. Вот почему я спрашиваю: «Почему вы хотите это сделать? Чего конкретно вы пытаетесь достичь?» поскольку может быть лучший подход к тому, что вы пытаетесь сделать.

person Kevin W. Wall    schedule 23.11.2018
comment
Изначально мы хотели исправить наш метод подделки логов. Мы нашли кодировщик ESAPI и заменили наш собственный кодировщик на кодировщик ESAPI. Но как только мы изменили это, мы поняли, что у нас есть много жесткого кода, который использует эти символы при регистрации, и я подумал, что было бы нормально просто игнорировать эти символы, поэтому я задал этот вопрос. Теперь мы понимаем, что это решение имеет довольно неприятный запах, и вместо этого мы планируем полностью реорганизовать наш метод ведения журнала. - person Mingxuan He; 25.11.2018