• 插件测试
    • 参数说明
    • 创建测试用例
    • 运行测试用例
    • 插件耗时测试

    插件测试

    参数说明

    我们的插件开发工具 openraspjs 提供了插件测试命令,可以对插件进行功能和性能测试。命令行参数如下,

    1. $ rasp check
    2. OpenRASP plugin devtool - https://rasp.baidu.com
    3. Usage: rasp-check
    4. Options:
    5. -d, --case-dir <dir> specify a testcases directory
    6. -p, --plugin-file <plugin> specify a javascript plugin file
    7. -h, --help output usage information

    创建测试用例

    我们在 baidu/openrasp 上提供了一些样例。测试用例以 JSON 格式保存,示例如下:

    1. [{
    2. "id": "ssrf_userinput_intranet",
    3. "name": "ssrf",
    4. "action": "block",
    5. "params": {
    6. "hostname": "172.16.177.120",
    7. "ip": ["172.16.177.120"],
    8. "url": "http://172.16.177.120/hello.action?redirect=123"
    9. },
    10. "context": {
    11. "parameter": {
    12. "url": ["http://172.16.177.120/hello.action?redirect=123"]
    13. }
    14. },
    15. "description": "SSRF userinput match test"
    16. }]

    其中,action 表示期望的结果,是拦截、日志还是放行;id 是测试用例编号。其他字段主要是对请求上下文的模拟。

    运行测试用例

    运行单元测试,需要两个关键参数

    • 测试用例目录
    • 检测插件路径 比如,若要测试官方插件,可以执行如下命令:
    1. $ rasp check -d ~/openrasp/agent/java/engine/src/test/resources/pluginUnitTest/unitCases/ -p ~/openrasp/plugins/official/plugin.js
    2. [offical] OpenRASP official plugin: Initialized, version 2018-1010-1600
    3. sql.json Simple userinput match test: 9ms
    4. sql.json SQL injection with hex values: 1ms
    5. sql.json SQL injection with datetime methods: 2ms
    6. ssrf.json SSRF userinput match test: 2ms
    7. ssrf.json SSRF false positive test: 1ms
    8. 5 passing (26ms)

    当测试结果中出现 failing 和详细错误信息时,表示测试用例没有通过。

    插件耗时测试

    每一个测试用例所消耗的时间出现在测试结果行的最末端。

    若时间被标注为黄色,表示该测试用例消耗时间过长,若时间被标注为红色,表示该测试用例消耗时间超过最大限制。默认超时时间为 20ms