为网站添加额外的安全性

Mer*_*ous 6 java security spring spring-security hybris

我正在运行基于Java Spring MVC的Web应用程序.它也基于Hybris平台.

现在,已经实现了身份验证和授权方面的基本功能.这意味着我们有会话过滤器,工作用户系统等.

但是,我们目前没有针对诸如XSS和其他可能的攻击等内容的安全措施.XSS可能是最大的担忧,因为它是最常见的攻击方式.

现在,我想知道......采取哪些步骤是明智的?我看了一下,我看到像XSS-Filter这样的东西存在.实现这样做非常简单,只需复制一下源代码并将其添加为tomcats web.xml即可.

但是我想知道这样过滤器的安全性是否令人满意?

还有更臃肿的解决方案,例如我可以使用spring-security.然而,阅读文档,我觉得这是非常臃肿,其中很大一部分实现了已经实现的(例如,两个A).我觉得将它配置为我需要它完成的工作量需要花费很多工作.我错了吗?

和:

您如何建议处理安全问题,例如XSS?您是否使用了某种适合需求的预定义框架,或者通过遵循备忘单等内容来"手工制作"您的安全性?

Nei*_*gan 6

  1. 设置Anti-XSS Headers(提示:使用Spring Security或制作自己的Interceptor)

    Content-Security-Policy: default-src 'self'   --only allow content from your own site
    
    X-XSS-Protection: 1; mode=block   --prevent some reflective attacks in some browsers
    
    X-Content-Type-Options: nosniff   --can't trick browser into detecting and running js in other content types
    
    Run Code Online (Sandbox Code Playgroud)
  2. 防止恶意入站HTML/JS/CSS

    使用Hibernate Validator(您不需要使用Hibernate ORM来使用它)和@SafeHtml所有用户提供的String字段上的注释.

    您可以在一个Interceptor中验证所有请求标头,post params和查询参数,以进行简单的XSS验证.

  3. 在输出时转义所有用户提供的数据

    使用OWASP的Java编码器项目 <e:forHtml value="${attr}" />来转义输出或JSTL <c:out value="${attr}"/>web.xml集合

    <context-param>
        <param-name>defaultHtmlEscape</param-name>
        <param-value>true</param-value>
    </context-param>
    
    Run Code Online (Sandbox Code Playgroud)

    如果转义HTML节点文本,它们同样安全,但OWASP对HTML属性或<script>转义更安全.

    如果您要编辑的文件太多,请考虑http://pukkaone.github.io/2011/01/03/jsp-cross-site-scripting-elresolver.html

  4. 使JavaScript无法读取您的会话cookie.在web.xml:

    <session-config>
        <cookie-config>
            <!-- browser will disallow JavaScript access to session cookie -->
            <http-only>true</http-only>
        </cookie-config>
        <tracking-mode>COOKIE</tracking-mode>
    </session-config>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果您要托管用户上传的文件,则需要使用不同的域(不是子域)进行下载链接,这样恶意内容就无法破坏您的会话cookie(是的,即使它是httpOnly也会发生这种情况)