zoukankan      html  css  js  c++  java
  • 网站开发中的安全检查(Penetration Test)

    一般稍微大一点规模的网站上线前都要做一下安全性测试。(Penetration Test)

     

    安全测试一般包括以下几个步骤: 

    1.选择一系列安全问题点,分析测试的可行性.(选择几个需要进行测试的问题,例如SQL注入)

    2.定位系统缺陷,并在其中找出高风险性的部分.(一般使用自动化工具)

    3.定位那些可能存在的, 难以被自动化测试工具测试出来的缺陷.

    4.评估缺点对潜在业务和操作的影响.

    5.测试现有系统防御能力,应对和处理攻击数据的能力.

    6.提供用于改进享有系统安全性的建议

    一般常见的问题如下:(包括但不仅限于)

    1.SQL 注入。

    2.XSS 和 CSRF。

    3.Cookies,Session劫持和伪造。

    4.不必要的权限和信息泄露。

    5.伪造数据和授权问题

    6.环境和代码安全性 (服务器配置,混淆,加壳等)

    问题原因往往是:

    1.架构设计的缺陷或者未充分考虑安全性

    2.代码BUG

    3.不完整的测试,代码覆盖率不够高(当然较高的代码测试覆盖率意味者较高的成本,一般指关于逻辑和数据的测试)

    4.未及时移除测试性代码和将DEBUG的信息发布到生产环境

    5.服务器设置,特别是权限

    6.某些人员恶意修改

    一般分为自动化和人工两个部分

    自动化一般是使用自己或者第三方开发的工具:

      第三方工具推荐: IBM AppScan http://www-01.ibm.com/software/awdtools/appscan/  非常贵但是非常好用的End-to-End测试工具

          还有一些免费的测试工具,例如nikto和skipfish  不过免费的...确实不是什么好货色....

      这些自动化工具同时一般也包含服务器扫描,断链,拼写检查等功能

    人工测试主要是以下的策略:

    1. CodeReview

    • CodeReview其实很大程度上是为了给developer一种压力,让developer知道有人会查看他的代码,从而促使他提供更高质量的产品.
    • CodeReview还有其他很多的用途,移除程序中的缺陷是其中比较重要的一个.

    2.手动测试

    •  一般是选择几个关键的流程和功能进行测试

    有兴趣的朋友可以看看这个文档 Technical Guide to Information Security Testing and Assessment  

    和这个网页 http://en.wikipedia.org/wiki/Penetration_test

    另外建议项目适当的设置不同的环境  (不仅仅用于保证安全性)

    1.Local

    2.DEV 用于开发小组的内部测试,一般程序员只能工作于Local和DEV环境

    3.QAT 只有QA有权限部署该环境,QA在这个环境工作

    4.UAT  用户将在这个环境进行测试,该环境的搭建和程序集的编译往往是和开发人员无关的

    5.Prod

      

  • 相关阅读:
    ibatis集成封装之路(to mysql)
    设计模式第一弹—适配器模式
    markdown语法
    outlook vba开发要点
    PHP中json_encode中文编码的问题_学习
    isset、empty、var==null、is_null、var===null详细理解
    对冒泡和二分法,特别是二分法有了更深的理解
    php Socket表单提交学习一下
    php Socket模拟表单上传文件函数_学习
    java第九节 网络编程的基础知识
  • 原文地址:https://www.cnblogs.com/PurpleTide/p/2275648.html
Copyright © 2011-2022 走看看