Очистка ввода, чтобы не нарушать синтаксис JSON - PullRequest
0 голосов
/ 02 июля 2011

Итак, в двух словах, я пытаюсь создать регулярное выражение, которое я могу использовать в Java-программе, которая собирается отправить объект JSON на мой php-сервер.

myString.replaceAll(myRegexString,"");

Мой вопрос заключается в том, что я абсолютно не хорош с регулярным выражением, и, чтобы добавить к этому, мне нужно правильно экранировать символы, хранящиеся в строке, а затем также экранировать символы внутри регулярного выражения.Господи.

Я придумал следующее:

String myRegexString = "[\"',{}[]:;]"

Первый обратный слеш состоял в том, чтобы избежать внешних кавычек, чтобы получить "там".Меня поразило, что {} и [] также являются командами регулярных выражений. Буду ли я их избегать? Например:

String myRegexString = "[\"',\{\}\[\]:;]"

Заранее спасибо. В случае, если это не было ясно из примеров вышетолько символы, которые меня действительно волнуют в данный момент времени: " { } [ ] ,, а также ; : ' для общей защиты sqlinj.

ОБНОВЛЕНИЕ:

Это последнее регулярное выражение: [\\Q\"',{}[\]:;\\E] дляЛюбой другой любопытно. Спасибо, Амит!

Ответы [ 2 ]

3 голосов
/ 02 июля 2011

Почему бы вам не использовать реальный API / среду кодирования JSON? То, что вы делаете, не дезинфицирует. То, что вы делаете, это повреждение данных. Если меня зовут О'Рейли, я хочу, чтобы оно было написано О'Рейли, а не Ореилли. Если я отправлю сообщение, содержащее [или {, я хочу, чтобы они были в сообщениях. Используйте фреймворк или API, который экранирует эти символы при необходимости, а не удаляя их вслепую.

Поиск в Google для JSON Java приведет вас ко многим API и фреймворкам.

1 голос
/ 02 июля 2011

Попробуйте что-то вроде

String myRegexString = "[\\Q\"',{}[]:;\\E]";

, теперь символы между \ Q и \ E теперь обрабатываются как нормальные символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...