如何使用grep或awk计算违反ScanJS规则的行为,以协助文本文件报告中的安全审核?

时间:2017-03-09 17:43:35

标签: javascript owasp

我正在尝试使用grep和/或awk创建一个脚本来回答下面列出的问题(参考图形以供参考)

  1. 巨型文本文件中标题为“results.txt”的行包含文本“scanjs-rules /”?
  2. “results.txt”中有多少行与图2中的第一个条目匹配?
  3. 这些行中有多少与图2中的第二个条目匹配? (继续到108条规则列表的末尾)
  4. 我们如何创建图3中列出的示例报告?
  5. 动机: ESLint生成的报告针对每个文件以及每个文件的潜在违规行为 - 但据我所知,我无法生成任何统计信息来帮助某人对此执行安全的代码审查。

    注意:我使用ScanJS的ESLint配置文件生成这些文本文件报告,但我想让它们更容易阅读。

    Figures 1-3

    修改

    我格式化了规则,因此每个规则都是这样的: accidental_assignment

    而不是:
    "scanjs-rules/accidental_assignment": 1

    然后我运行了这个命令:

    while read l; do grep -i "${l//\"/}" results.txt; done < rules.txt

    关于此的好处:它按字母顺序打印出每个规则违规,并标识以帮助您查看results.txt文件。

    结果图片:link

    期望的改进:我仍然希望它打印出实际规则然后计算 - 如图3所示。有任何建议吗?

2 个答案:

答案 0 :(得分:1)

试试这个。

cat results.txt | grep scanjs-rules | wc
  • cat将显示results.txt
  • 的内容
  • grep会选择那些 包含“scanjs-rules”的行
  • wc会做一个字数,第一个数字是你的答案行数

答案 1 :(得分:1)

您应该能够使用此命令计算包含已搜索字符串的行:

cat results.txt | grep <searched> | wc -l 

一起

for f in `sed -e 's/"\(.*\/\)\(.*\)\(".*\)/\1\2/' pattern.txt`;
  do printf $f' - '; cat result.txt | grep $f | wc -l;
done

将打印结果

scanjs-rules/accidental_assignment - 2
scanjs-rules/assign_to_hostname - 2
scanjs-rules/assign_to_href - 4

哪里

$ cat pattern.txt
"scanjs-rules/accidental_assignment":1,
"scanjs-rules/assign_to_hostname":1,
"scanjs-rules/assign_to_href":1,

和结果文件示例:

$cat result.txt
This is dummy line
312:9 warrning from scanjs-rules/accidental_assignment
Another dummy line
Another dummy line
Another dummy line
312:9 warrning from scanjs-rules/assign_to_hostname
312:9 warrning from scanjs-rules/accidental_assignment
Another dummy line
312:9 warrning from scanjs-rules/assign_to_href
Another dummy line
312:9 warrning from unsafe scanjs-rules/assign_to_hostname
312:9 warrning from scanjs-rules/assign_to_href
312:9 warrning from scanjs-rules/assign_to_href
312:9 warrning from scanjs-rules/assign_to_href