我正在开发一个web应用程序,它通过HTML输入接受用户输入,并将它发送到我的tomcat服务器进行进一步处理。正确使用正则表达式时需要HTML转义吗?
目前我的工作流程是这样的:
客户
JS - > HTML需要输入 - >做正则表达式检查 - >如果全成 - > $。员额(...)
服务器
接收后的数据 - >做正则表达式检查 - >如果全成 - >处理数据
从我understandig这应该是罚款,也没有必要做HTML转义
但我想知道是否有可能仍然是在东西是不允许潜行的方式。
进一步的思考:
在我的.java文件的
public void doPost(HttpServletRequest request, HttpServletResponse response){...}
方法执行下列操作以接收已发送的参数:
String post_param_1 = request.getParameter("param_1");
这(明明)必须在正则表达式检查可以在该特定参数上运行之前发生。
问题1:这可能是攻击者在java代码中潜入/导致不需要的行为的“开放窗口”吗?攻击者可以发送后请求与一个单独的工具,而不是通过正规的网站(例如)
问题2:如果Q#1被证明是真实的,可以做这样的事情:
request.getParameter("param_1").matches(regex_string)
规避?
问题3:如果我的做法是足够的,它仍然需要做HTML转义在somepoint(可能在掠JS输入之间,并通过正则表达式运行之前)?
最后有没有人对这个主题有任何意见或建议,还是我缺少一些东西(比如在客户端和服务器上执行正则表达式检查太多)?
问候 Alkahna
THX你的答案的时候。为了逃避一般:我只需要输入并在服务器端进行处理。文本显示已经处理完毕。对于'1)'它一般是针对注入攻击(JS也是)。这就是我想在这里安全的原因。对'2)'你是对的,那就是我现在在代码中已经做的事情。所以最后你可以说,我的方法足以防止错误输入(正则表达式),并通过自动注入攻击? – Alkahna
是的,在向用户显示文本时转义是防止JS注入的必要条件。 – megaflop