RASP 类接口

    创建实例

    创建 RASP 实例需传入插件名,e.g demo

    获取JS引擎名称

    1. var name = plugin.get_jsengine()
    2. // 返回 rhino / v8

    修改配置

    注意: PHP 版本目前不支持此接口

    这个接口会修改配置,但是不会更新 rasp.properties 配置文件

    1. RASP.config_set('reflection.monitor', 'java.lang.ProcessBuilder.start, ...')

    注册检测程序到对应检测点

    检测函数接受两个参数

    • params 对应检测点的参数信息

    具体有哪些检测点可以注册,以及 params 的样例,请参考检 参数说明

    注意: 对于同一个检测点,如果你注册了多个检测函数,这些函数会按照注册顺序,依次调用

    将SQL语句解析为 Token(BETA)

    • query 表示要解析的查询语句
    • server 表示SQL服务器类型
      目前本功能还在试验阶段,且暂时不区分SQL服务器类型
    1. RASP.sql_tokenize('SELECT * FROM users WHERE id = -1 union/*!50000select*/1,2,3', 'mysql')
    2. // ['SELECT', '*', ...]

    打印调试日志

    使用方法与 console.log 一致,只是会同时输出插件的名字,方便你区分不同插件的日志

    获取插件名

    手动调用检测方法

    在编写单元测试时,可手动调用此方法

    这个方法会按照注册顺序,依次调用所有的检测函数,并返回一个检测结果数组

    1. var params = {
    2. 'query': 'select * from users',
    3. 'server': 'mysql'
    4. }
    5. var checkContext = new Context()
    6. RASP.check('sql', params, context)
    7. // => [{
    8. // 'action': 'block',
    9. // 'message': 'attack',
    10. // }]