繁体   English   中英

防止javascript中的xss攻击造成url

[英]prevent url from xss attack in javascript

我正在研究数据安全Web应用程序。 我正在尝试将参数从onw jsp页面传递到另一个页面,它很容易受到XSS攻击。 如何防止JSP攻击

我尝试了以下操作:

1)我的网址是:“ localhost:8080 / samplejsp.jsp?employeeId = 16 ”,如果我尝试传递类似“ localhost:8080 / samplejsp.jsp?employeeId = alert(%27Hello%27) ”的网址,显示'Hello')。

2)我有一个按钮,当我单击该按钮时,我正在打开一个新的jsp页面,将employeeId传递给新的JSP“ localhost:7070 / samplejsp1.jsp?employeeId = 16

3)我试图限制employeeId,但要验证正则表达式,即给定输入只能是数字,否则我不会重定向。

4)现在,当我尝试单击传递“ employeeId = alert(%27Hello%27)”的按钮时,它仍显示警报消息(“ Hello”),但未重定向到新的jsp页面

我的问题是,如果发生XSS(跨站点加密)攻击,如何停止警报消息? 提前致谢

我的回答是基于您这样说的:

3)我试图限制employeeId,但要验证正则表达式,即给定输入只能是数字,否则我不会重定向。

由于您是专门处理数字的,因此可以使用实数解析技术,而不要使用充满错误的正则表达式。

这是一种更好的方法。

int number = -1; //initializing with invalid numerical value for your application
try
{
   number = Integer.parseInt(userInputString);
}
catch(Exception ex)
{
   // could not convert the number
   response.sendRedirect("./error.jsp");
   return;
}

或者,如果为时已晚,无法进行重定向,因为您已经在响应中写了一些东西:

if(number == -1) // whatever is an invalid numerical value for your application
{
    out.print("There was an error with the number");
    return;
}

如果数字需要为双Double.parseDouble(str)数,则Double.parseDouble(str)或float Float.parseFloat(str)

对于整数,字符串值(例如“ 1d”)将在分析时引发错误。 但是对于双精度浮点数和浮点数,数字后面会加上“ d”或“ f”,例如“ 1d”和“ 1f”(即在数字变量中变为1.0)。 因此,在解析数字后,请确保使用数字变量而不是用户输入的字符串。

您可以使用owasp-java-encoder https://github.com/OWASP/owasp-java-encoder

您可以使用

Encode.forHtml(userData)

对于正在打印回到页面的每个用户输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM