使用grails spring安全控制直接图像访问

时间:2012-08-14 16:35:38

标签: grails spring-security tomcat7

我的images文件夹中有一个子目录,它是网络驱动器的符号链接。这使我们能够将数千张图像存储在更适合的地方。

如果经过身份验证的用户访问过加载这些图片的页面,则未经过身份验证的用户可以从浏览器访问该图片的直接网址路径。

例如,如果图像路径是: http://some.server.com:8080/SomeApp/static/images/gpfscc/data_storage/frameburglar/img/33/1761/some_image.jpg

它可以访问整个世界。

我尝试使用staticRules,悲观锁定和interceptUrlMap以几种不同的方式配置它。

我当前的config.groovy看起来像这样:

//Too ristrictive? Could not get past login
//grails.plugins.springsecurity.rejectIfNoRule = true

//grails.plugins.springsecurity.controllerAnnotations.staticRules = [
//        '/images/gpfscc/**': ['IS_AUTHENTICATED_REMEMBERED'],
//        '/static/images/gpfscc/**': ['IS_AUTHENTICATED_REMEMBERED']
//
//]

grails.plugins.springsecurity.interceptUrlMap = [
//        '/images/gpfscc/**': ['IS_AUTHENTICATED_REMEMBERED'],
//        '/static/images/gpfscc/**': ['IS_AUTHENTICATED_REMEMBERED'],
        '/secUser/**':         ['IS_AUTHENTICATED_REMEMBERED'],
        '/secUserSecRole/**':     ['IS_AUTHENTICATED_REMEMBERED'],
        '/trip/**':         ['IS_AUTHENTICATED_REMEMBERED'],
        '/collection/**':   ['IS_AUTHENTICATED_REMEMBERED'],
        '/secRole/**':         ['IS_AUTHENTICATED_REMEMBERED'],
        '/vehicle/**':      ['IS_AUTHENTICATED_REMEMBERED'],
        '/login/**':        ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/logout/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
        '/*':               ['IS_AUTHENTICATED_ANONYMOUSLY']
]

最终结果是控制器和页面应用了propper安全性,但“静态”资源不会检查身份验证。

我需要告知,如果你知道如何知道网址的时间,你就无法在登录和正确的群组中访问图像。

谢谢。

0 个答案:

没有答案