OpenRASP Documents (Old)
  • 简介
  • 安装部署
    • 兼容性说明
    • 安装管理后台
    • 快速接入
      • PHP 服务器
      • Tomcat 服务器
      • JBoss 服务器
      • Wildfly 服务器
      • Resin 服务器
      • Jetty 服务器
      • Spring Boot 框架
      • WebLogic 服务器
      • WebSphere 服务器
      • 宝兰德BES服务器
      • 东方通TongWeb服务器
      • 中创InforSuiteAS服务器
      • 普元PAS服务器
    • 安装测试用例
    • 安装灰盒扫描工具
      • IAST 高级配置选项
    • SIEM 系统集成
      • Splunk
      • Logstash
    • 大规模部署
    • 卸载软件
  • 服务配置
    • 日志说明
    • 管理后台
    • 单机版本
    • 其他配置
  • 功能说明
    • 攻击检测能力说明
    • CVE 漏洞覆盖说明
    • 安全基线检查
    • 应用加固支持
    • 应用异常监控
    • 类库信息查询
    • HTML 响应修改
  • 插件开发
    • 开发插件
    • 接口说明
      • RASP 类接口
      • Context 类接口
    • 参数说明
    • 单元测试
    • 在线调试
    • 官方插件定制
  • 二次开发
    • 架构说明
      • Java 版本
      • PHP 版本
      • 管理后台
      • IAST 扫描器
      • Hook 函数列表
    • 从源代码编译
      • Java 版本
      • PHP 版本
      • 管理后台
    • 云控后台接口
    • 代码调试
    • 添加新的Hook点
    • 添加新的插件API
    • 提交你的代码
  • 性能测试
  • 版本变更
  • 关于我们
Powered by GitBook
On this page
Export as PDF
  1. 插件开发
  2. 接口说明

RASP 类接口

所有插件需要实例化一个 RASP 对象,并在此对象上注册各检测点对应的检测程序

创建实例

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

var plugin = new RASP('demo')

获取agent版本号 (v1.2.0 加入)

var name = plugin.get_version()
// 返回 1.2.0

获取JS引擎名称

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

发送HTTP请求 (v1.2.0 加入)

支持发送 GET/POST 请求,其中 data 字段可以是字符串、对象或者 Buffer

var body = {
    "name": "openrasp"
}

var req  = {
    "method":       "post",
    "url":          "http://127.0.0.1/test",
    "data":         data,
    "maxRedirects": 0,
    "timeout":      30,
    "headers": { 
        "content-type": "application/json"
    },    
}
    
RASP.request(req)

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

检测函数接受两个参数

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

  • context 请求上下文信息

plugin.register('sql', function(params, context) {
  // 在这里实现检测逻辑
  // 并返回结果
  return {
     action: 'ignore',
     message: '无风险'
  }
})

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

将SQL语句解析为 Token(BETA)

函数接受两个参数

  • query 表示要解析的查询语句

  • server 表示SQL服务器类型

目前本功能还在试验阶段,且暂时不区分SQL服务器类型。

RASP.sql_tokenize('SELECT * FROM users WHERE id = -1 union/*!50000select*/1,2,3', 'mysql')
// [
// 	  { text: 'SELECT', start: 0, stop: 5 },
// 	  { text: '*',      start: 7, stop: 7 },
// 	  ...
// ]

将 Bash/CMD 语句解析为 Token(BETA)

函数接受一个参数

  • command 表示要解析的命令

目前本功能还在试验阶段,且暂时不区分操作系统

RASP.cmd_tokenize('/bin/bash -c ls')
// [ 
//    { text: '/bin/bash', stop: 8,  start: 0  },
//    { text: '-c',        stop: 11, start: 10 },
//    { text: 'ls',        stop: 14, start: 13 } 
// ]

打印调试日志

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

plugin.log('hello', 'openrasp')
// 将会在日志里输出 [demo] hellp openrasp

获取插件名

var name = plugin.name
// => 'demo'

手动调用检测方法

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

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

e.g 模拟一个SQL注入请求,请调用插件获取检测结果

var params = {
  'query': 'select * from users',
  'server': 'mysql'
}
var checkContext = new Context()
RASP.check('sql', params, context)
// => [{
//    'action': 'block',
//    'message': 'attack',
//    'name': 'demo'
// }]
Previous接口说明NextContext 类接口

Last updated 11 days ago

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

参数说明