如何在Java应用程序中阻止XSS攻击并防止用户在网页上执行JavaScript
How to block XSS attacks in a Java application and prevent users executing JavaScript on the webpage?
在我们的网站上,我们有一个搜索字段,一位安全研究人员建议我们,这对XSS漏洞是开放的,因为访问者可以尝试执行完整的JavaScript。他们给我们发了一个简单的URL示例,它会在搜索页面上显示一个JavaScript警报框——URL参数是搜索?提交=真&action=search&siteId=2.9945&freeText=1";确认(/XSPOSED/);a="&sort=publishedDate_descending&slotSearch=真正的
安全研究人员建议,所有数据都应该通过一个类似于PHP的htmlentities的函数传递,同时设置ent引号和UTF8标志,以防止使用模糊处理进行攻击。因此,我搜索了一下是否有相当于htmlentities的Java,并从Apache Commons Lang的StringEscapeUtils类中找到了escapeHtml()和escapeJavaScript()方法:https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html.escapeHtml()方法转义HTML字符,例如<和>,但我对JavaScript不太确定。escapeJavaScript方法实际上似乎是使用JavaScriptString规则来转义String中的字符,而不是剥离JavaScript本身。
那么,有人知道有什么解决方案可以100%停止JavaScript在页面上的呈现吗?
如果您正在使用java并希望在后端验证它,您可以使用此代码,在本例中,它检查用户是否没有发送可疑值而不是他的姓名
if (CommonUtility.checkValidate(firstName) || CommonUtility.checkValidate(lastName) ||
CommonUtility.checkValidate(newUserName)) {
response
.sendRedirect(PHConstants.CONTEXT_PATH
+ "/login/registrationError.jsp");
return;
}
public static boolean checkValidate(String name) {
if (null != name) {
String patternString = ".*javascript:.*|.*//.*|.*<.*|.*>.*";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(name);
return matcher.matches();
}
return false;
}
我们可以通过添加识别规则来识别服务器端的回火URL。这是通过在RuleConf文件夹中添加conf文件来完成的
供您参考的代码示例:
SecRule REQUEST_LINE "@contains myapp/access/PageServlet?url=/notices/dummyNotifPage.jsp" "chain,phase:2,t:none,status:403,msg:'Generic javascript Injection prevention',severity:2"
SecRule ARGS|QUERY_STRING "(<[^>]*>)" "status:403"
SecRule REQUEST_LINE "@contains myapp/access/PageServlet?url=/notices/dummyNotifPage.jsp" "chain,phase:2,t:none,status:403,msg:'Generic javascript Injection prevention',severity:2"
SecRule ARGS|QUERY_STRING "(?i)javascript:" "status:403"
SecRule REQUEST_LINE "@contains myapp/access/PageServlet?url=" "chain,phase:2,t:none,status:403,msg:'Check for double slashes in url parameter',severity:2"
SecRule ARGS|QUERY_STRING "/{2}" "status:403"
- 如何知道用户已经重新加载了网页,使用jquery.如果用户重新加载网页,
- 如果用户选择离开网页,如何删除记录
- 用户在文本框中输入一个数字,并根据使用 PHP 输入的数字重定向到另一个网页
- 最佳实践:在网页对用户可见后调用.Net函数
- 在没有javascript的情况下呈现网页之前,用户如何验证和定制页面
- 具有多个用户或会话的网页
- 当用户向下滚动我的网页时,如何删除chrome地址栏周围的边框
- 如何在Java应用程序中阻止XSS攻击并防止用户在网页上执行JavaScript
- 根据用户在asp.net网站中选择的弹出窗口使用JavaScript操作网页
- 如何根据从选择菜单中提供给用户的选项更改网页的背景颜色
- 阻止IE用户加载网页
- 如何检测用户的语言并重定向到适合语言的网页
- 如何在用户离开网页时显示模态窗口
- 当用户单击网页中的任意位置时,如何获得通知
- 如果用户调整窗口大小/窗口未最大化,是否可以隐藏网页上的图像
- 如何让网页显示一次,并且不再向用户显示
- 仅当用户来自特定页面或链接时,使网页可见
- 阅读带有用户IP地址的网页(以php为单位)
- 网页如何确定用户是否有鼠标或触摸屏输入
- 如果 10 分钟后网页上没有用户活动,如何向上滚动到向下滚动页面