2017-09-27 123 views
1

我正在研究数据安全Web应用程序。我试图将onw jsp页面的参数传递给另一个,并且容易受到XSS攻击。如何防止在JSP攻击在javascript中防止xss攻击url

我尝试以下操作:

1)我的网址是: “本地主机:8080/samplejsp.jsp雇员= 16”,如果我试图通过如'localhost:8080/samplejsp.jsp?employeeId = alert(%27Hello%27)'的网址会显示alert('Hello')。

2)我有一个按钮,当我点击该按钮,我正在打开传递雇员到新的JSP “本地主机?:7070/samplejsp1.jsp雇员= 16” 一个新的jsp页面

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

4)现在,当我尝试点击通过“employeeId = alert(%27Hello%27)”的按钮时,它仍显示警告消息('Hello'),但它不会重定向到新的jsp页面

我的问题是如何停止警报消息,如果XSS(跨站点sciprting)攻击发生?在此先感谢

回答

0

我的回答是基于你说这句话的:

3)我试图限制雇员,但验证正则表达式的给定的输入只能是数字,否则我没有重定向。

由于您正在处理一个数字,您可以使用实数解析技术而不是错误缠身的正则表达式。

下面是一个更好的方法来做到这一点。

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”这样的字符串值将在解析时引发错误。但是对于double和float,数字后跟“d”或“f”,如“1d”和“1f”,将会通过(即在数字变量中变为1.0)。所以请确保在分析数字后使用数字变量而不是用户输入字符串。