[英]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.