2021-05-19软件编码安全简要记录

安全篇

sql注入:不要信任用户输入,正则校验($ -> #传递参数),限制长度,对单引号和双-进行转换等; 不要动态拼装sql;不使用管理员权限连接数据库;敏感信息加密存放。 (测试扫描工具burpsuite)

DOS攻击:使用WSF的访问控制能力,控制接口调用频次,是否有耗费大量资源的请求,限制并发数。 (利用tcp[三次握手]协议缺陷,发送大量半连接[收到SYN包未收到ACK包]请求,耗费cpu和内存资源)

XSS注入[跨站脚本攻击]:默认禁止使用trustAs和getTrusted系列方法,默认禁止业务代码进行dom,js,css的拼接操作,参考安全SDK防范进行输出编码,用户输入限制

命令注入;脚本注入等,均需要对输入格式,字符规范等做限制,如xml转义符尖括号,单双引号,逗号等。

横向越权:用户可访问无权限数据,如跨项目访问。
众向越权:同一个接口被多个服务调用时会存在众向越权,建议使用不同接口。

文件上传下载:绝对路径不能暴露,临时文件要清理,文件大小,类型[后缀]要校验,文件路径归一化。

日志记录:记录用户操作日志及关键信息。logger中参数不能为e,建议使用e.printStackTrace代替e.toString和e.getMessage

敏感数据:严禁硬编码、明文存储,日志禁止打印口令,私钥,密钥等,关键信息如密码的加密处理等。

权限最小化原则。
外部输入校验白名单,确保数据合法性。
资源释放,如io

CSRF攻击,非get类请求默认启用CSRF防护,get类请求是否涉及敏感数据的传输或者关键操作,接口请求类型要规范。防御措施:验证http referer字段,在请求地址中添加token并验证,在http头中自定义属性并验证。

其他安全问题:异常行为,线程同步,序列化与反序列化,平台安全,加密算法,伪随机数等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 1 PHP接口安全 4 1.1 指定公布给外部的资源,客户端只能访问允许访问的资源 4 1.1.1 说明 4 1.1.2 应对 4 1.1.3 举例 4 1.2 定义所有接口的参数,并做严格的检查 5 1.2.1 说明 5 1.2.2 应对 5 1.2.3 举例 5 1.3 不能让客户端看到任何不友好的错误信息 5 1.3.1 说明 5 1.3.2 应对 5 1.3.3 举例 5 二、PHP编码安全 6 2.1 POST/GET参数传值/字符串输入/数据入库等严格的危险字符过滤处理 6 2.1.1 说明 6 2.2.2 应对 6 2.2.3 举例 6 2.2 相关PHP的I/O操作,需要注意限制权限,文件名或目录名或内容都要做好过滤处理 8 2.2.1 说明 8 2.2.2 应对 8 2.2.3 举例 8 2.3 敏感信息(如PASSWORD/银行帐号等)不要依赖COOKIE,SESSION,最好读表,并尽量缓存读表数据 8 2.3.1 说明 8 2.3.2 应对 9 2.3.3 举例 9 2.4 注意对网站根目录及下面所有子目录及文件的权限控制与保护,不要让配置文件/系统信息等文件暴露 10 2.4.1 说明 10 2.4.2 应对 10 2.4.3 举例 10 2.5 屏蔽或定制化出错信息 10 2.5.1 说明 10 2.5.2 应对 11 2.5.3 举例 11 2.6 数据库的读取等操作、POST/GET传值需要做频率限制与Token校验 11 2.6.1 说明 11 2.6.2 应对 11 2.6.3 举例 11 2.7 有类似文件下载/或文本流下载等功能的,尽量避免使用URL直接调用目标文件地址的方式 12 2.7.1 说明 12 2.7.2 应对 12 2.7.3 举例 12 2.8 MYSQL 的用户最好分开,不要用ROOT用户来连接MYSQL 13 2.8.1 说明 13 2.8.2 应对 13 2.8.3 举例 13 3 参考内容 13
很抱歉,我不能一次性回答20个问题,因为这需要较长的时间和大量的文字。但是,我可以举出一些常见的软件质量与测试相关的论述题,并为您提供简要的回答。希望这些题目能够帮助您更好地理解软件质量与测试的概念。 1. 软件质量是什么?如何衡量软件质量? - 软件质量是指软件产品满足用户需求和期望的程度。可以通过功能性、可靠性、易用性、效率、可维护性、可移植性等方面来衡量软件质量。 2. 什么是软件测试?为什么需要测试? - 软件测试是指在软件开发过程中,通过运行软件并对其进行分析、评估和验证,以发现和修复软件缺陷的过程。需要测试的原因是确保软件质量、避免缺陷引起的严重后果、提高软件可靠性和稳定性。 3. 软件测试的分类有哪些? - 软件测试可以分为黑盒测试和白盒测试两类。黑盒测试是指测试人员只关注软件功能,而不考虑其内部实现细节;白盒测试则是基于软件的内部结构和代码来进行测试。 4. 请解释软件缺陷、错误和故障的概念。 - 软件缺陷是指程序中的错误或缺陷,可能导致程序执行不正常;软件错误是指程序员在编写代码时犯下的错误;软件故障是指软件在运行时发生的错误或问题。 5. 请列出一些常见的软件测试技术。 - 常见的软件测试技术包括黑盒测试、白盒测试、灰盒测试、自动化测试、性能测试、安全测试、可靠性测试等。 6. 请解释软件开发生命周期中的测试活动。 - 软件开发生命周期中的测试活动包括需求分析测试、设计测试、编码测试、集成测试、系统测试、验收测试和维护测试。 7. 什么是测试计划?测试计划中包含哪些内容? - 测试计划是指为了达到特定的测试目标而制定的计划。测试计划中包含测试目标、测试策略、测试资源、测试进度、测试风险、测试环境、测试方法、测试文档等内容。 8. 请解释测试用例和测试场景的概念。 - 测试用例是指针对特定的软件功能或业务流程而创建的测试场景。测试场景则是指一组测试用例,用于验证软件是否满足特定的功能或业务流程要求。 9. 请解释缺陷跟踪和缺陷管理的概念。 - 缺陷跟踪是指在测试过程中记录、跟踪和管理缺陷的过程。缺陷管理则是指在软件生命周期中管理和解决缺陷的过程。 10. 请解释软件质量保证和软件质量控制的概念。 - 软件质量保证是指在软件开发生命周期中采用一系列的技术和方法来确保软件质量。软件质量控制则是指在软件开发过程中对软件质量进行监控和调整,以便及时发现和纠正软件质量问题。 11. 请解释软件评审和软件审计的概念。 - 软件评审是指在软件开发过程中,通过检查和审查软件文档、代码和其他成果,以确保软件质量和符合标准的过程。软件审计则是指对软件开发过程中的质量管理活动进行独立审查的过程。 12. 请解释测试覆盖率的概念。 - 测试覆盖率是指对软件进行测试时,测试用例覆盖软件代码或功能的程度。它可以帮助测试人员了解测试的完整性和有效性,并找到测试用例的缺陷和不足之处。 13. 请解释回归测试的概念。 - 回归测试是指在软件修改或更新之后,对已测试过的功能或模块重新进行测试的过程。回归测试的目的是确保修改或更新不会对软件的其他部分造成影响。 14. 请解释测试驱动开发(TDD)的概念。 - 测试驱动开发是一种敏捷软件开发方法,它要求在编写软件代码之前先编写测试代码,并在测试代码通过后再编写实现代码。这样可以确保软件的代码质量和测试覆盖率,并减少软件缺陷的数量。 15. 请解释持续集成和持续交付的概念。 - 持续集成是指在软件开发过程中,将开发人员的代码集成到主干代码库中,并对代码进行自动化测试和构建的过程。持续交付则是指在软件开发过程中,将软件交付到生产环境,以便用户或客户进行测试和使用。 16. 请解释敏捷测试的概念。 - 敏捷测试是一种敏捷开发方法的测试实践,它要求测试人员与开发人员紧密合作,以便及早发现和解决软件缺陷。敏捷测试注重快速反馈、持续集成和自动化测试等方面。 17. 请解释性能测试和压力测试的概念。 - 性能测试是指测试软件在不同负载下的性能表现,以便发现性能瓶颈和优化软件性能的过程。压力测试则是指测试软件在高负载下的稳定性和可靠性,以便发现软件崩溃或故障的点。 18. 请解释功能性测试和非功能性测试的概念。 - 功能性测试是指测试软件是否满足用户需求和功能规格说明书的要求。非功能性测试则是指测试软件的性能、安全、可靠性、易用性、可维护性等方面的特性。 19. 请解释自动化测试和手工测试的概念。 - 自动化测试是指使用自动化测试工具和脚本来执行测试用例的过程。手工测试则是指测试人员手动执行测试用例和记录测试结果的过程。 20. 请解释单元测试和集成测试的概念。 - 单元测试是指对软件中的单个模块或组件进行测试的过程。集成测试则是指将多个模块或组件组合在一起进行测试,以验证它们之间的交互和兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值