Java - 转义字符

时间:2016-03-23 08:13:12

标签: java html

我正在逃避引用程序参数以防止跨站点脚本(XSS)。然而,当谈到前端时会发生一些奇怪的事情。

我可以确认我的代码确实正确地逃避了它。以下单元测试通过:

@Test
public void testEscapeURLDefaultWithQuotesAndAlertQuery() {
    String urlPath = "/listDeals.do";
    String queryParams = "/h1=en&q=2ce12\"onmouseover=\"alert(1)\"style=\"position:absolute;width:100%;height%;top:0;left:0;\"2ce12";
    String result = TermsheetAction.escapeURL(urlPath, queryParams);
    assertNotNull(result);
    assertEquals("/listDeals.do/h1=en&q=2ce12"onmouseover="alert(1)"style="position:absolute;width:100%;height%;top:0;left:0;"2ce12", result);
}

然而,在浏览器中,URL返回的内容如下:

h1=en&q=2ce12"nmouseover="lert(1)"tyle="osition:absolute;width:100%;height%;top:0;left:0;"ce12

总之,它被转移到:

/listDeals.do/h1=en&q=2ce12"onmouseover="alert(1)"style="position:absolute;width:100%;height%;top:0;left:0;"2ce12", result

但浏览器会删除引号旁边的第一个字母。

谢谢!

0 个答案:

没有答案