2016-07-11 8 views
1

У меня есть одно приложение J2EE, и для этого приложения усиление сканирования показывает проблемы, зависящие от Locale.Исправлено фортификационное сканирование Изменения локали появляются снова

Я установил те вопросы, где с помощью Locale.ENGLISH функций toUpperCase (Locale.ENGLISH) и toLowerCase (Locale.ENGLISH) при сравнении строк, Ранее,

firstName.trim().toLowerCase(); 

Теперь

firstName.trim().toLowerCase(Locale.ENGLISH); 

, и я снова запускаю проверку сканирования приложения. Однако во второй раз ускорение сканирования показывает ошибку Locale в том же месте.

Кто-нибудь знает, как я могу исправить такие проблемы?

Спасибо, Jay

+0

Какова точная ошибка? – Taegost

ответ

1

Вопрос категория «портативность дефектоскоп: Локально зависимое Сравнение» (RULEGUID = D8E9ED3B-22EC-4-СВ-98C8-7C67F73CCF4C) принадлежит к царству «Кодекс качество» и НИЗКИЙ РИСК вопрос , Я обычно оставляю его без исправления.

ОБОСНОВАНИЕ Когда "java.lang.String.toUpperCase()/toLowerCase()" используется без установки языкового стандарта, он будет использовать региональные настройки по умолчанию. Это может привести к отключению проверки безопасности. Например, мы хотим исключить «скрипт» из пользовательского ввода; если язык по умолчанию является турецким, tag.toUpperCase() возвращает «T \ u0130TLE», где «\ u0130» является символом «LATIN CAPITAL LETTER I WITH DOT ABOVE». Поэтому проверка «скрипта» игнорируется.

if (tag.toUpperCase().equals("SCRIPT")){ 
    return null;} 

РЕКУЛЬТИВАЦИЯ

(1) вы можете установить язык при запуске VM и отметьте этот вопрос "не проблема"

java -Duser.language=en -Duser.country=US -Duser.variant=US MainClass 

(2) или установите язык по коду

import java.util.Locale; 
//be aware that Locale.setDefault is global, below set locale to en_US_WIN 
    Locale.setDefault(new Locale("en", "US", "WIN")); 

(3) или, если клиенты используют различные языки, использовать HttpServletRequest.getLocale

// см пример кода here