题
我在一些非常大的项目上运行强化(2.6.5),但它无法标记一些关键问题,这真的必须。似乎强化是否为命名为“密码”的变量进行了一些模式匹配,然后执行DataFlow分析。这很棒,有助于确保这种敏感数据不会发生隐私违规,例如将它们写入记录器(在调试中)。
这一切都很好,良好,但是我们通过其他变量名称(如“凭据”)以及需要在处理中的严格级别的其他机密信息等其他机密信息传递到系统中的密码,与包含字符串“密码”的变量一样强化。
是否有一些简单的方法添加到/配置此类关键字列表,以便在“密码”时强化致电它们?
解决方案
“Easy”取决于您与自定义规则的舒适度。您可以确定将A +私有Taint Flag(与隐私违规规则相关联的Tailt)添加到名为“凭证”的变量,其中包含具有符号化。
这是一个小示例赛段的结构匹配规则,你需要开始:
VariableAccess va: va.variable.name matches "(?i).*credential.*" and
not va in [AssignmentStatement: lhs.location is va]
and
( va.variable.type.name == "java.lang.String" or
va.variable.type.name == "java.lang.StringBuffer" or
va.variable.type.name matches "byte.*" or
va.variable.type.name matches "char.*")
. 其他提示
使用AWB自定义规则向导进行更简单的方法。从“规则类型”列表中,选择“特征规则”,然后选择“私有源的表征”。
您的变量“凭据”将是秘密或私有数据的来源。只需按照向导,它使用您指定的正则表达式创建规则。表达式区分大小写,它遵循Java正则表达式方言: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/pattern.html
不隶属于 StackOverflow