目前的安全,只是对用户密码加密,前台jquery验证。
如何实现防止注入攻击还有我的页面有些隐藏域保存这当前登录用户的信息等信息。
用户查看页面源代码就可以查看到了。
有没好的解决方案呢?还有其他哪些要注意的地方呢?
Struts2 hibernate3 spring 3.0
sql server 2000 sp4

解决方案 »

  1.   

    你用的这些完全解决不了安全问题1:向 CA 购买证书,使用 HTTPS 进行通信,以保证在网络传输过程中是安全的
    2:避免 XSS 注入(页面回显的 input text, input hidden 均过滤 <、>、"、' 等字符等)
    3:使用随机键盘或者安全控件防止键盘木马记录用户的输入
    4:若要在 Cookie 中写入数据,尽量使用 Cookie 的 HttpOnly 属性
    5:响应中设置一些诸如 X-Frame-Options、X-XSS-Protection 等高版本浏览器支持的 HTTP 头
    6: 不管客户端是否做过数据校验,在服务端必须要有数据校验(长度、格式、是否必填等等)
    7: SQL 语句采用 PreparedStatement 的填充参数方式,严禁使用字符串拼接 SQL 或者 HQL 语句
      

  2.   

    8: 密码在数据库中以摘要形式保存,不要以明文形式存储,摘要方法建议采用用户名加密码进行,算法可以采用 SHA-1 或者 SHA-256,以 Base64 编码存入数据表中(SHA-1 摘要后的 Base64 有 28 个字符,SHA-256 摘要后的 Base64 有 44 个字符)
      

  3.   

    Oracle JDK 中默认 Sun JCE Provider 提供的消息摘要算法中,MD2 被证明有安全隐患;MD5、SHA-1 已被王小云教授发现可以以低于生日攻击的概率更快地找到碰撞,因此对于高安全性的摘要来说这两种算法不应再使用了。可以使用 SHA 家族更高摘要位数的 SHA-224(Sun JCE Provider 未提供,需要使用 224 位的 SHA 可以使用 BouncyCastle JCE Provider)、SHA-256、SHA-384、SHA-512
      

  4.   

    前台你用来验证密码合法性? 这个不太合理吧
    md5加密了然后直接替换原来的密码框内容就行 然后再用js提交表单 这样就不存在你说的要放在隐藏域什么的
      

  5.   

    内网使用,只要3点就OK
    (1)前台验证,不允许有: < >  =
    (2)后台同样验证
    (3) 使用PreparedStatement
      

  6.   

    前台jquery验证
    后台也需要struts2 验证码?
    怎么不允许有: < > =
      

  7.   

    后台验证是必需的!输入的 < > 在页面显示时弄成 &lt; &gt; 之类的就可以了,Struts 2 有标签可以直接转义的。