在javascript

时间:2017-09-27 21:29:50

标签: javascript jquery jsp security xss

我正在研究数据安全Web应用程序。我试图将参数从onw jsp页面传递到另一个页面,并且很容易受到XSS攻击。我怎样才能防止jsp中的攻击

我尝试了以下内容:

1)我的网址是:" localhost:8080 / samplejsp.jsp?employeeId = 16 ",如果我尝试传递网址如' 本地主机:8080 / samplejsp.jsp EMPLOYEEID =警报(%27Hello%27)'显示警告(' Hello')。

2)我有一个按钮,当我点击该按钮时,我打开一个新的jsp页面,将employeeId传递给新的JSP "的本地主机:7070 / samplejsp1.jsp EMPLOYEEID = 16 "

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

4)现在,当我尝试点击通过" employeeId = alert(%27Hello%27)" 的按钮时,它仍然显示警告消息(&#39 ; Hello')但它没有重定向到新的jsp页面

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

2 个答案:

答案 0 :(得分:0)

我的回答基于你这样说:

  

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)或浮动Float.parseFloat(str)的两倍。

对于整数,字符串值如" 1d"将在解析时抛出错误。但对于双倍和浮动,数字后跟一个" d"或" f"喜欢" 1d"和" 1f",将通过(即在数字变量中变为1.0)。因此,请确保在解析数字后使用数字变量而不是用户输入字符串。

答案 1 :(得分:0)

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

您可以使用

  

Encode.forHtml(用户数据)

用于打印回页面的每个用户输入。