当前位置: 首页 > news >正文

c++代码示例_2个小时学会源代码审计

fa3aa82ff257521010bf44054be5902c.png

很多刚入行信息安全的童鞋总喜欢抱怨Code Audit很难,CA工作涉及多种开发语言,如C/C++/Java/Javascript/JSP/PHP/Python等等,结合自身多年的代码审计经验,在这里我总结了一些可以快速上手的技巧,帮助你们快速出活。下面列举审计中最常见的十类Java安全漏洞。


一、日志伪造Log Forging:将未经验证的用户输入写入日志文件可致使攻击者伪造日志条目或将恶意信息内容注入日志。

示例代码:

1

修复代码:

1

审计技巧:看代码中是否有像第7、8行这样的过滤掉rn这两个换行符。

二、资源未释放:数据流Unreleased Resource: Streams:此类漏洞导致程序可能无法成功释放某一项系统资源。

示例代码:

1

修复代码:

public 

审计技巧:看代码中是否对输入流判断非null值再进行数据流关闭。(假如是Java8.0版本语言开发,则可以直接对数据进行关闭)

三、跨站脚本:反射型Cross-Site Scripting: Reflected:向一个 Web 浏览器发送未经验证的数据会导致该浏览器执行恶意代码。

示例代码:

以下 

修复代码:使用struts自带的跨站修复函数方式

对于Spring框架项目中,有专门加密配置文件密码的方法如下:

public 

审计技巧:看代码中是否对前端输入的数据进行特殊符号的转义过滤,重点关注函数“filtedText”。

四、密码管理:密码在配置文件中Password Management: Password in Configuration File:在配置文件中存储明文密码,可能会危及系统安全。

示例代码:

<

修复代码:

1

审计技巧:查看程序代码中是否存在敏感信息,安全开发规范标准中明确规定敏感信息应 加密&存储 于配置文件中。

五、sql注入SQL Injection:通过不可信来源的输入构建动态 SQL 指令,攻击者就能够修改指令的含义或者执行任意 SQL 命令。

示例代码:

public 

修复代码:

public 

审计技巧:查看代码中是否有使用PreparedStatement参数化查询。

六、动态代码评估:代码注入Dynamic Code Evaluation: Code Injection:在运行时中解析用户控制的指令,会让攻击者有机会执行恶意代码。

示例代码:

<

修复代码:

使用正则表达式对传入的代码参数进行约束,限制外界传入 eval 的参数中只包含字母和数字。

<

审计技巧:查看代码中是否有对传入参数进行过滤。

七、可移植性缺陷:文件分隔符Portability Flaw: File Separator:使用硬编码文件分隔符会导致可移植性问题。

示例代码:

以下代码使用硬编码文件分隔符来打开文件

修复代码:

使用独立于平台的 API 来指定文件分隔符:

...

审计技巧:查看代码中是否调用了File.separator来代替分隔符“”,“/”。

八、Open重定向Open Redirect:如果允许未验证的输入控制重定向机制所使用的 URL,可能会有利于攻击者发动钓鱼攻击。

示例代码:

<%
 

修复代码:

<%
 

审计技巧:查看代码中是否有使用创建编号的方法指定并校验重定向的目标URL。

九、弱加密Weak Encryption:识别调用会使用无法保证敏感数据的保密性的弱加密算法。

审计技巧:加密算法不应为MD5或者DES,至少应该是3DES,金融行业的话,至少应该是AES。

十、弱加密:RSA不恰当填充Weak Encryption: Inadequate RSA Padding:

示例代码:

public 

修复代码:

public 

审计技巧:加密算法后面的填充方式不应为空或者是ECB,至少应CBC。

相关文章:

  • python字典程序题_笨办法学Python 习题 39: 字典, 可爱的字典
  • python 数学公式_线性回归算法用到的数学公式及python实现
  • delphi中的函数传参如何传枚举参数_函数调用背后的秘密——传参与返回值
  • python字符串处理函数汇总_超详细!盘点Python中字符串的常用操作
  • java接口应用在哪些方面_掏空了各大搜索引擎,整理了154道Java面试题!
  • flutter框架优缺点_2020年,一文点破跨平台开发框架现状
  • collect的功能是什么?其底层如何实现的?_用Python实现定时自动化收取蚂蚁森林能量,再也不怕被偷了...
  • docker python_「docker实战篇」python的docker-docker镜像的创建使用命令(32)
  • 在android studio中如何创建一个类来继承另外一个类_Python编程从入门到实践-连载8(类)...
  • python气象绘图速成_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)
  • ubuntu 自动挂载共享文件夹 /etc/fstab_使用 Cobbler 批量自动化部署 Windows 10 和 Windows Server 2019...
  • idea redis 插件_最全 !10个Redis可视化工具横向评测
  • sqlserver可视化工具_每个数据科学家都应该知道的18个基础工具
  • python coding_Python的编码注释# -*- coding:utf-8 -*-
  • python生成指定长度的列表_如何用Python创建固定长度的列表
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Akka系列(七):Actor持久化之Akka persistence
  • Android框架之Volley
  • CSS魔法堂:Absolute Positioning就这个样
  • Flannel解读
  • gcc介绍及安装
  • Java 内存分配及垃圾回收机制初探
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Javascript弹出层-初探
  • JavaScript函数式编程(一)
  • node 版本过低
  • node.js
  • PHP的类修饰符与访问修饰符
  • python 学习笔记 - Queue Pipes,进程间通讯
  • 理清楚Vue的结构
  • 排序算法之--选择排序
  • 前端
  • 前端面试之闭包
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用 QuickBI 搭建酷炫可视化分析
  • 一道面试题引发的“血案”
  • 找一份好的前端工作,起点很重要
  • 终端用户监控:真实用户监控还是模拟监控?
  • 最简单的无缝轮播
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 阿里云API、SDK和CLI应用实践方案
  • 阿里云重庆大学大数据训练营落地分享
  • 如何在招聘中考核.NET架构师
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • ${factoryList }后面有空格不影响
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (14)Hive调优——合并小文件
  • (9)STL算法之逆转旋转
  • (bean配置类的注解开发)学习Spring的第十三天