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

Web applications 是否可以从客户端访问web.xml?,web-applications,spring-security,web.xml,Web Applications,Spring Security,Web.xml,我正在开发一个web应用程序,在web.xml中,我对身份验证过程有一些查询。因此,如果一个人看到这个查询,他可以很容易地访问这些安全表。是否可以访问我的web.xml,或者我根本不必担心 更具体地说,我在web.xml中介绍了我的安全配置,在该安全上下文文件中,我对身份验证进行了查询。以下是我正在谈论的部分(我正在使用Spring Security) 坏吗?我不应该用它吗? 请用一些参考资料来证明您的答案。 当然,请告诉我其他的选择 是否可以从客户端访问web.xml 没有。为什么?因

我正在开发一个web应用程序,在
web.xml
中,我对身份验证过程有一些查询。因此,如果一个人看到这个查询,他可以很容易地访问这些安全表。是否可以访问我的
web.xml
,或者我根本不必担心
更具体地说,我在
web.xml
中介绍了我的安全配置,在该安全上下文文件中,我对身份验证进行了查询。以下是我正在谈论的部分(我正在使用Spring Security)



坏吗?我不应该用它吗?

请用一些参考资料来证明您的答案。
当然,请告诉我其他的选择

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

没有。为什么?因为根据协议,所有可访问的资源都是通过servlet公开的。如果您没有明确定义servlet(或过滤器或侦听器)来处理/公开.xml资源,那么您就不必担心了

一般来说,web容器负责保护配置资源。你可以相当肯定它会成功地做到这一点

您给出的示例代码不是web.xml,而是您的安全命名空间配置。这就像web.xml一样,也是您不应该担心的事情

一般来说,servlet容器不会使任何内容公开可访问,除非您明确告诉它

坏吗?我不应该用它吗

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


但是,作为个人偏好,我倾向于使用自定义的
UserDetailsService
AuthenticationManager
实现来处理用户身份验证,因为这样可以将数据库相关代码排除在安全定义之外。不过,这只是一种偏好。

不错。。。你把我打昏了。谢谢但是对于最后一段,是否有一个很好的教程
如何在Authentication Manager中使用我自己的自定义UserDetails服务
?到目前为止,我只学会了这个方法。只要看看
UserDetailsService
上的spring安全文档就可以了。这也很有帮助:非常感谢@Simeon。“你是生命的救世主。”马丁克很高兴我能帮上忙:)
<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>