- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的 java 应用程序中,我们使用 Spring security 来处理基于角色的授权。最近,我们发现对 web.xml
中的多个 servlet 映射执行这些 URL 检查很容易被绕过。然而,在将其缩减为一个 servlet 映射之后,我仍然不确定我们是否正确设置了 URL 匹配器,因为它们非常容易被绕过。例如:
<sec:intercept-url pattern="/m/partner/list/**" access="hasRole('VIEW_ADMIN_PARTNER_LIST')"/>
乍一看,它确实阻止了具有 VIEW_ADMIN_PARTNER_LIST
角色的用户加载该页面...直到我将 .html
添加到其末尾。然后加载就好了。或者,如果我添加 .fff
或任何其他扩展名,它就可以工作。因此,我们将模式更改为:
<sec:intercept-url pattern="/m/partner/list**" access="hasRole('VIEW_ADMIN_PARTNER_LIST')"/>
效果很好!现在,无论我在 url 末尾添加什么扩展名,我仍然会收到 403 错误。但是......在 URL 末尾添加斜杠完全绕过了安全性。不是我们想要的。
看来要真正实现实际的 URL 模式安全性,我们必须实现这两种模式?这不太理想,因为我们有超过 75 条 URL 安全规则,复制它们并保持同步会很困难。有没有更好的方法来编写模式匹配,或者Spring的安全性本质上被破坏了?
编辑:以下是我们的 web.xml 中的相关信息:
<servlet-mapping>
<servlet-name>myproject</servlet-name>
<url-pattern>/m/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
最佳答案
切换到使用正则表达式来表达您的 URL,它为您提供了更大的灵 active ,例如:
<sec:http auto-config="true" use-expressions="true" path-type="regex">
<sec:intercept-url pattern="/m/partner/list.*" access="hasRole('VIEW_ADMIN_PARTNER_LIST')"/>
</sec:http>
注意 /**
已被 .*
替换,在正则表达式世界中它将匹配任何内容。
关于java - Spring 的秒 :intercept-url easily bypassed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415382/
假设我有一个像这样的Dockerfile: FROM debian:stretch RUN apt update RUN apt install -y wget RUN wget https://st
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
在我正在创建的网络应用程序中,使用了很多媒体。因此,如果每次加载页面时都必须重新加载该媒体,就会有很大的压力。 (由于媒体不在页面内,而是通过 websockets 检索的,我怀疑浏览器是否会缓存它)
我正在努力做到这一点,以便当用户点击时发生这种情况。 按顺序, Does something. (Not being specific, this isn't the important part.)
我这里有个小问题。我知道 Linux 限制了用户实际可以运行的线程数。 我正在使用 pthread_create 和一个限制为 50 ( pthread_t tid[50]; ) 的 pthread_
第一次在这里提问,我通常不需要发布任何东西就可以找到我所有的答案,但今天我被困在我的小程序中(我不是程序员所以如果错了我可能会这样做)。这是问题所在:我正在阅读日志文件,同时寻找一些关键字,相当简单。
想一想,我们可以在开发应用程序时绕过 iPhone/iPad 应用程序的 Splash-Screen 吗?实际上,我需要没有启动画面的应用程序,但是如果我没有在 X 代码中为启动画面设置图像,它在启动
我有一个 RStudio 项目,它使用 renv 管理包,效果很好。 但有时我想在我的主环境(正确的词?)上使用库来调试或探索一些我不想添加到项目中的东西。例如,也许我想运行一些长调试函数并在最后调用
我有一个 RStudio 项目,它使用 renv 管理包,效果很好。 但有时我想在我的主环境(正确的词?)上使用库来调试或探索一些我不想添加到项目中的东西。例如,也许我想运行一些长调试函数并在最后调用
我制作了一个小型应用程序,我必须根据关键字检索 URL。这是代码: Elements doc = Jsoup .connect(request) .userAgen
我需要计算非常大的数字之间的比率,如代码所示: import scipy.special x=2000 n=range(8,x+1) q=[] for i in range(0,len(n)):
我想通过在多个条件下连接多个表来选择行...但它失败了。 PonyORM似乎限制了“if 语句”中的条件数量。 在 estore.py/test_queries (PY3.6, PonyORM 0.7
我在使用 AddConventionalPlugin 时遇到此错误: 你必须传入插件实例的类型——比如 typeof(Cirrious.MvvmCross.Plugins.Visibility.Win
在 CircleCI 中使用 apt-get 时,我得到 Press [ENTER] to continue or ctrl-c to cancel adding it。如何自动绕过它? 我尝试使用
因此,我目前在 Google 的 Compute Engine 平台上租用了一台大型服务器,每月费用约为 180 美元。我以前从未设置过邮件服务器并掌握了 Exim4,并且在我发现 Google 阻止
我得到一个网址: r = requests.get("http://myserver.com") 正如我在“myserver.com”的“access.log”中看到的,使用了客户端的系统代理。但我想
我在 Mathematica 中从未出现过溢出错误,发生了以下情况。 我演示了 RSA 加密的原理如下: n = 11*13 m = EulerPhi[n] e = 7 GCD[e, m]
我想在某些情况下绕过Spring webflow(Spring 2.0.5)应用程序的登录表单(因此该登录表单是为普通用户提供的,但是当URL像http://server.com/myspringap
我们最近在我们的应用程序中实现了 okta。 每当用户想要登录时,它都会要求输入 okta 代码,该代码每 30 秒会不断变化,但是在运行 selenium 时,我应该如何输入 okta 代码? 我可
我正在构建一个网络应用程序,用户可以在其中与其他用户共享链接。 让我们用一个例子来说明我的问题: Alice 正在使用网络应用。 Alice 通过 Messenger API 分享与 Bob 的链接。
我是一名优秀的程序员,十分优秀!