mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-27 10:18:49 +03:00
Merge b5318902b09713b5ddc5924f6d5d6f84ad530587 into e523d7223b5589e68de2c2a9428a4ba81a265e6f
This commit is contained in:
commit
7df46da7ba
81
README.md
81
README.md
@ -113,59 +113,92 @@ Below some are illustrated:
|
||||
### Simple example using C++
|
||||
|
||||
```c++
|
||||
using ModSecurity::ModSecurity;
|
||||
using ModSecurity::Rules;
|
||||
using ModSecurity::Transaction;
|
||||
#include "modsecurity/modsecurity.h"
|
||||
#include "modsecurity/rules_set.h"
|
||||
#include "modsecurity/transaction.h"
|
||||
|
||||
using modsecurity::ModSecurity;
|
||||
using modsecurity::RulesSet;
|
||||
using modsecurity::Transaction;
|
||||
using modsecurity::ModSecurityIntervention;
|
||||
|
||||
int main() {
|
||||
ModSecurity *modsec;
|
||||
ModSecurity::Rules *rules;
|
||||
RulesSet *rules;
|
||||
|
||||
modsec = new ModSecurity();
|
||||
|
||||
rules = new Rules();
|
||||
rules = new RulesSet();
|
||||
|
||||
rules->loadFromUri(rules_file);
|
||||
if (rules->load("SecRule REMOTE_ADDR \"@ipMatch 127.0.0.1\" \"id:1,phase:1,deny\"") < 0) {
|
||||
std::cout << "Problems loading the rules..." << std::endl;
|
||||
std::cout << rules->getParserError() << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
Transaction *modsecTransaction = new Transaction(modsec, rules);
|
||||
Transaction *modsecTransaction = new Transaction(modsec, rules, nullptr);
|
||||
|
||||
modsecTransaction->processConnection("127.0.0.1");
|
||||
if (modsecTransaction->intervention()) {
|
||||
// connection
|
||||
modsecTransaction->processConnection("127.0.0.1", 12345, "127.0.0.1", 80);
|
||||
// uri
|
||||
modsecTransaction->processURI("/", "GET", "1.1");
|
||||
// add headers
|
||||
modsecTransaction->addRequestHeader("User-Agent", "ModSecurity/v3");
|
||||
// check headers
|
||||
modsecTransaction->processRequestHeaders();
|
||||
// check intervention
|
||||
ModSecurityIntervention intervention;
|
||||
intervention.disruptive = 0;
|
||||
if (modsecTransaction->intervention(&intervention)) {
|
||||
std::cout << "There is an intervention" << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### Simple example using C
|
||||
|
||||
```c
|
||||
#include "modsecurity/modsecurity.h"
|
||||
#include "modsecurity/rules_set.h"
|
||||
#include "modsecurity/transaction.h"
|
||||
|
||||
|
||||
char main_rule_uri[] = "basic_rules.conf";
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
ModSecurity *modsec = NULL;
|
||||
Transaction *transaction = NULL;
|
||||
Rules *rules = NULL;
|
||||
RulesSet *rules = NULL;
|
||||
|
||||
modsec = msc_init();
|
||||
|
||||
rules = msc_create_rules_set();
|
||||
msc_rules_add_file(rules, main_rule_uri);
|
||||
|
||||
transaction = msc_new_transaction(modsec, rules);
|
||||
|
||||
msc_process_connection(transaction, "127.0.0.1");
|
||||
msc_process_uri(transaction, "http://www.modsecurity.org/test?key1=value1&key2=value2&key3=value3&test=args&test=test");
|
||||
msc_process_request_headers(transaction);
|
||||
msc_process_request_body(transaction);
|
||||
msc_process_response_headers(transaction);
|
||||
msc_process_response_body(transaction);
|
||||
|
||||
const char* error;
|
||||
if (msc_rules_add(rules, "SecRule REMOTE_ADDR \"@ipMatch 127.0.0.1\" \"id:1,phase:1,deny\"", &error) < 0) {
|
||||
fprintf(stderr, "Problems loading the rules...\n");
|
||||
fprintf(stderr, "%s\n", error);
|
||||
return 0;
|
||||
}
|
||||
|
||||
transaction = msc_new_transaction(modsec, rules, NULL);
|
||||
|
||||
// connection
|
||||
msc_process_connection(transaction, "127.0.0.1", 12345, "127.0.0.1", 80);
|
||||
// uri
|
||||
msc_process_uri(transaction, "/", "GET", "1.1");
|
||||
// add headers
|
||||
msc_add_request_header(transaction, "User-Agent", "ModSecurity/v3");
|
||||
// check headers
|
||||
msc_process_request_headers(transaction);
|
||||
|
||||
ModSecurityIntervention intervention;
|
||||
intervention.disruptive = 0;
|
||||
if (msc_intervention(transaction, &intervention)) {
|
||||
fprintf(stderr, "There is an intervention\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
# Contributing
|
||||
|
Loading…
x
Reference in New Issue
Block a user