Как санировать HTML-код в Java для предотвращения нападений на XSS?

Хорошо -Weverything позволяет довольно много предупреждений, некоторые из которых, как известно, бросают нежелательные предупреждения.

Здесь ваш код запускает предупреждение cast-align, которое явно говорит

cast from ... to ... увеличивает необходимое выравнивание от ... до ...

blockquote>

И это имеет место здесь, потому что выравнивание для struct addr - только 2 тогда как для struct addr_in оно равно 4.

Но вы (и программист для getaddrinfo ...) знаете, что указатель p->ai_addr уже указывает на фактический struct addr_in, поэтому актерский состав Действительный.

Вы можете либо:

  • , чтобы предупредить огонь и проигнорировать его - ведь это всего лишь предупреждение ...
  • отключить его с -Wno-cast-align после -Weverything

Должен признать, что я редко использую -Weverything по этой причине и использую только -Wall


Альтернативно , если вы знаете, что используете только CLang, вы можете использовать pragmas , чтобы развернуть предупреждение только в этих строках:

for(p = res; p != NULL; p = p->ai_next) {
    void *addr;
    std::string ipVer = "IPv0";

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wcast-align"

    if(p->ai_family == AF_INET) {
        ipVer                    = "IPv4";
        struct sockaddr_in *ipv4 = (struct sockaddr_in *)p->ai_addr;
        addr                     = &(ipv4->sin_addr);
    }

    else {
        ipVer                     = "IPv6";
        struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)p->ai_addr;
        addr                      = &(ipv6->sin6_addr);
    }
#pragma clang diagnostic pop

....
}

24
задан WildWezyr 5 August 2010 в 10:13
поделиться

3 ответа

Вы можете попробовать OWASP Java HTML Sanitizer . Это очень просто в использовании.

PolicyFactory policy = new HtmlPolicyBuilder()
    .allowElements("a")
    .allowUrlProtocols("https")
    .allowAttributes("href").onElements("a")
    .requireRelNofollowOnLinks()
    .build();

String safeHTML = policy.sanitize(untrustedHTML);
23
ответ дан Saljack 28 November 2019 в 23:23
поделиться

Что касается антисемия, вы можете проверить это относительно зависимостей:

http://code.google.com/p/owaspantisamy/issues/detail?id=95&can=1& ; д = redyetidave

0
ответ дан RedYeti 28 November 2019 в 23:23
поделиться

Вы можете использовать OWASP ESAPI для Java , библиотеку безопасности, созданную для делать такие операции.

В нем есть не только кодировщики для HTML, но и кодировщики для кодирования JavaScript, CSS и URL. Примеры использования ESAPI можно найти в шпаргалке по предотвращению XSS, опубликованной OWASP.

Вы можете использовать проект OWASP AntiSamy для определения политики сайта, в которой указывается, что разрешено в отправляемом пользователем контенте. Политику сайта можно позже использовать для получения «чистого» HTML-кода, который отображается обратно. Вы можете найти образец файла политики TinyMCE на странице загрузок AntiSamy .

13
ответ дан 28 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: