Playframework 中的跨站点脚本和 Web 参数篡改预防

Posted

技术标签:

【中文标题】Playframework 中的跨站点脚本和 Web 参数篡改预防【英文标题】:Cross-Site Scripting and Web Parameter Tampering prevention in Playframework 【发布时间】:2012-03-22 19:41:42 【问题描述】:

在发布我们的第一个公开 alpha 版本 http://wwww.trademango.com 之后,它使用 Play 框架构建。我经历过某人或某物(即机器人)进行的 Web 参数篡改尝试。这些尝试已经进行了一段时间。我们正在考虑提高我们的安全性。我想知道是否有人有将 owsap 等工具与 Playframework 集成的经验。我希望获得一些社区反馈,了解其他人针对此类攻击所做的工作。

以下是一些实际的 Web 参数篡改尝试:

@69mkklokf 请求 GET /supplier/:q/:page?q=:supplierUUID 的内部服务器错误 (500) 执行异常(在 module:common-model/app/models/services/ID.java 第 46 行左右) NumberFormatException 发生:对于输入字符串:“” play.exceptions.JavaExecutionException:对于输入字符串:“” 在 play.mvc.ActionInvoker.invoke(ActionInvoker.java:231) 在 Invocation.HTTP 请求(播放!) 引起:java.lang.NumberFormatException:对于输入字符串:“” 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Long.parseLong(Long.java:450) 在 java.lang.Long.valueOf(Long.java:508) 在models.services.ID.base36ToUUID(ID.java:46) 在 controllers.Application.supplier(Application.java:177) 在 play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548) 在 play.mvc.ActionInvoker.invoke(ActionInvoker.java:502) 在 play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478) 在 play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473) 在 play.mvc.ActionInvoker.invoke(ActionInvoker.java:161) ... 1 更多 2012 年 3 月 22 日 07:20:57,270 错误播放:570 - @69mkklokg 找不到 phpmyadmin.translators.html 操作 未找到操作 找不到操作 phpmyadmin.translators.html。引发的错误是找不到控制器 controllers.phpmyadmin.translators play.exceptions.ActionNotFoundException:找不到操作 phpmyadmin.translators.html 在 play.mvc.ActionInvoker.getActionMethod(ActionInvoker.java:590) 在 play.mvc.ActionInvoker.resolve(ActionInvoker.java:85) 在 Invocation.HTTP 请求(播放!) 原因:java.lang.Exception:找不到控制器 controllers.phpmyadmin.translators ... 3 更多 2012 年 3 月 22 日 10:13:16,611 错误播放:570 - @69mkklokh 不错的端口,.Trinity.txt.bak 未找到操作 未找到操作 Action nice ports,.Trinity.txt.bak 找不到。引发的错误是 Controller controllers.nice ports,.Trinity.txt not found play.exceptions.ActionNotFoundException: Action nice ports,.Trinity.txt.bak not found 在 play.mvc.ActionInvoker.getActionMethod(ActionInvoker.java:590) 在 play.mvc.ActionInvoker.resolve(ActionInvoker.java:85) 在 Invocation.HTTP 请求(播放!) 原因:java.lang.Exception: Controller controllers.nice ports,.Trinity.txt not found ... 3 更多

【问题讨论】:

【参考方案1】:

我会建议删除“catch all”路线

# Catch all  
*       /controller/action                  controller.action

删除它,并明确映射到您的所有控制器和操作。

【讨论】:

以上是关于Playframework 中的跨站点脚本和 Web 参数篡改预防的主要内容,如果未能解决你的问题,请参考以下文章

playframework 1.x 是不是处理跨站点脚本 (xss)?

在 Java Web 项目中显示 BLOB 对象,避免持久的跨站点脚本?

防止来自静态站点的跨站点脚本攻击

请教关于使用appscan 检测"基于DOM的跨站点脚本"漏洞修复问题

Set-cookie 不适用于 Dot net Core 3.1 中的跨站点请求/响应和 React 设置同站点 cookie 和/或 CORS 问题

Firefox 中的跨站点 XmlHttpRequest?