禁止访问 liferay 中的内部文件
Posted
技术标签:
【中文标题】禁止访问 liferay 中的内部文件【英文标题】:disallow access of internal files in liferay 【发布时间】:2015-04-29 12:01:13 【问题描述】:在liferay中我有 --tomcat --webapps --我的图片 --我的portlet 因此,使用 my-portlet 中的代码,我已经为特定用户提供了指向 myimages 文件夹中给定文件的链接。 链接将是 http://localhost:8080/myimages/User1.jpg
问题说明:我必须限制用户(而不是在 liferay 中定义的角色),以便他/她不能访问 myimages中的任何文件> 文件夹,因为她/他的用户直接点击上面的链接。 我测试过的内容:
-
我已经检查了 .htaccess 文件将不有用,因为 liferay 已经
tomcat 而不是 apache 服务器。
创建了一个过滤器类,我可以通过它拦截任何请求
应该处理。
openLDAP 无法使用,因为我们有单独的身份验证
机制。
所以如果有人知道如何处理这个安全问题,请给我建议。
【问题讨论】:
【参考方案1】:通过单个 web 应用程序(如 myimages
)解析的 URL,因此不通过 Liferay,不会知道访问 Liferay 的用户:它们将与其他 URL 很好地隔离(在这种情况下完全不相关) 网络应用程序 Liferay。
您可以做的是通过 portlet 插件提供这些文件,并通过 portlet 中的资源 URL 提供图像。这正确地通过了门户上下文(事实上,URL 将指向 Liferay,尽管在不同的 web 应用程序中实现)并且您将能够检查当前用户的权限。然后只需读取文件并将其通过管道传输到ResourceResponse
的输出流中。
如果文件确实是静态 Web 资源,您可能希望将它们放在 myimages/WEB-INF/images - 因为 Tomcat 将拒绝直接提供 WEB-INF 下的所有内容,但您的 portlet 将能够访问这些文件.
【讨论】:
以上是关于禁止访问 liferay 中的内部文件的主要内容,如果未能解决你的问题,请参考以下文章