是否可以从客户端访问web.xml?

时间:2012-08-08 05:26:27

标签: web-applications spring-security web.xml

我正在开发一个Web应用程序,在web.xml我对身份验证过程有一些疑问。因此,如果某人看到该查询,他可以轻松访问这些安全表。 是否可以访问我的 web.xml 或者我不应该担心?

更具体地说,我在web.xml中引用了我的安全配置,在该安全上下文文件中,我查询了身份验证。这是我正在谈论的部分(我正在使用Spring Security)

<sec:authentication-manager alias="authenticationManager">
    <sec:authentication-provider>
        <sec:jdbc-user-service data-source-ref="dataSource"
            group-authorities-by-username-query="
                                    SELECT acg.ID, acg.GROUP_NAME, a.ROLE_NAME AS AUTHORITY 
                                    FROM USER_GROUP acg, USER_GROUP_MAPPING agm, PRINCIPAL_ROLE_MAPPING ga, ROLE a, INVESTOR_USER us
                                    WHERE us.USERNAME = ? and agm.USER_ID = us.ID and acg.ID = ga.PRINCIPAL_ID and acg.ID = agm.USER_GROUP_ID and ga.ROLE_ID = a.ID
                                "
            users-by-username-query="SELECT USERNAME,PASSWORD,IS_ACTIVE FROM INVESTOR_USER where USERNAME = ?"
            authorities-by-username-query="
                                    SELECT ua.PRINCIPAL_ID AS USERNAME, a.ROLE_NAME AS AUTHORITY 
                                    FROM PRINCIPAL_ROLE_MAPPING ua, ROLE a, INVESTOR_USER us 
                                    WHERE us.USERNAME = ? and ua.PRINCIPAL_ID = us.ID and ua.ROLE_ID = a.ID
                                " />

        <sec:password-encoder ref="passwordEncoder"/>                               
        <!-- <<<<<<<<<<<<<<<< Encoding Password >>>>>>>>>>>>>>>> -->
    </sec:authentication-provider>
</sec:authentication-manager>


这不好吗?我不应该使用它吗?

请通过一些参考资料来证明您的答案。
当然,请用其他替代方法启发我。

1 个答案:

答案 0 :(得分:3)

  

是否可以从客户端访问web.xml?

不。为什么?因为根据Servlet Specification,所有可访问的资源都通过servlet公开。如果您没有显式定义servlet(或过滤器或侦听器)来处理/公开.xml资源,则无需担心。

通常,Web容器负责保护配置资源。你可以相当肯定它是如此成功的。

您作为示例提供的代码不是您的web.xml,而是您的安全命名空间配置。这作为web.xml也是你不应该担心的事情。

一般来说,除非您明确指出,否则servlet容器不会公开访问任何内容。

  

不好吗?我不应该使用它吗?

一般来说没有不坏。您还可以得出结论,如果Spring安全性在其配置中支持SQL,那么他们也将其视为正常做法。

作为个人偏好,我倾向于使用自定义UserDetailsServiceAuthenticationManager实现来处理用户身份验证,因为这会将数据库相关代码保留在安全定义之外。然而,这只是一种偏好。