二基于源码的安全测试方法绪论.ppt

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于安全规则的源代码分析方法研究 3.4 安全规则描述语言 2013-01-29 * 安全规则声明部分 转移规则列表 变量声明列表 基于安全规则的源代码分析方法研究 安全规则库 2013-01-29 * 方便用户重复使用自定义的安全规则 安全规则库的设计:唯一标识码,规则名称,规则描述,规则的存放路径,适用的语言类型,规则分类,漏洞风险等级,推荐修复方案,规则入库时间 相似安全规则检测:基于k-shingle和长度过滤的安全规则相似度检测算法 规则描述字符串的k-shingle定义为其中任意长度为k的子串 Jaccard相似度: 基于安全规则的源代码分析方法研究 安全规则库 2013-01-29 * 1.删去规则描述字符串中的停用词,包括常见的“的”、“了”以及“为了”等,从而缩短规则描述字符串的长度,使得产生的k-shingle的集合变小,同时提高了相似性检测结果的准确率 2.基于长度的过滤。在删除停用词的基础上,通过比较待检测相似字符串的长度,提前过滤掉一部分不符合相似度要求的规则描述,从而避免了产生k-shingle的集合和后续Jaccard相似度的计算,进一步提高算法效率 假定两个安全规则字符串u和v的Jaccard相似度的上界为J,对于任意一个规则字符串s,且Lu≤Lv,则有u和v的Jaccard相似度SIM(u,v)最大值为Ku/Kv,其中K为k-shingle的集合大小,即Lv需要满足: 基于安全规则的源代码分析方法研究 基于k-shingle和长度过滤的安全规则相似度检测算法 2013-01-29 * 算法3.1:基于k-shingle和长度过滤的安全规则相似度检测算法 输入:源规则字符串srcStr,目标规则字符串destStr,相似度sim,k-shingle中的k值 输出:实际相似度realSim 方法: 1: begin 2: liststopwords ← initStopWordList(stopWordFilePath) 3: for ? word ∈ liststopwords 4: deleteStopWords(srcStr, destStr) 5: if sim != 0 Length(destStr) ≤ (Length(srcStr) - k + 1) / sim + k – 1 then 6: srcSet ← Φ 7: destSet ← Φ 8: for i = 0 to Length(srcStr) – k //k-Shingle(srcStr) 9: srcSet.add(srcStr[i, i + k - 1]) 10: for j = 0 to Length(destStr) – k //k-Shingle(destStr) 11: destSet.add(destStr[j, j + k - 1]) 12: intersection ← srcSet ∩ destSet 13: union ← srcSet ∪ destSet 14: realSim ← Size(intersection) / Size(union) 15: else 16: realSim ← -1 17: return realSim 18:end; 基于安全规则的源代码分析方法研究 总体结构 2013-01-29 * 系统架构图 程序中间表示的设计 2013-01-29 * 保证结构清晰、简单 保存源代码中所有的有效信息 记录源代码的行号信息 程序结构部分 语句部分 类型部分 表达式部分 常量部分 程序中间表示 基于安全规则的源代码分析方法研究 源代码预处理分析模块 2013-01-29 * 基于安全规则的源代码分析方法研究 源代码预处理分析模块 2013-01-29 * 算法4.1:加载类库中指定类的算法 输入:完整类名name(必须使用命名空间加上类名称),类库文件绝对路径path 输出:如果类库中指定类加载成功,未出现任何异常,则返回true;否则,不做任何加载操作,返回false。 1: begin 2: type ← LoadFileAndGetType(path,name) 3: if type != null then 4: baseType ← getBaseType(type) 5: listinterfaces ← getInterfaceList(t

文档评论(0)

2226657222 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档