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,24 +113,46 @@ Below some are illustrated:
|
|||||||
### Simple example using C++
|
### Simple example using C++
|
||||||
|
|
||||||
```c++
|
```c++
|
||||||
using ModSecurity::ModSecurity;
|
#include "modsecurity/modsecurity.h"
|
||||||
using ModSecurity::Rules;
|
#include "modsecurity/rules_set.h"
|
||||||
using ModSecurity::Transaction;
|
#include "modsecurity/transaction.h"
|
||||||
|
|
||||||
ModSecurity *modsec;
|
using modsecurity::ModSecurity;
|
||||||
ModSecurity::Rules *rules;
|
using modsecurity::RulesSet;
|
||||||
|
using modsecurity::Transaction;
|
||||||
|
using modsecurity::ModSecurityIntervention;
|
||||||
|
|
||||||
modsec = new ModSecurity();
|
int main() {
|
||||||
|
ModSecurity *modsec;
|
||||||
|
RulesSet *rules;
|
||||||
|
|
||||||
rules = new Rules();
|
modsec = new ModSecurity();
|
||||||
|
|
||||||
rules->loadFromUri(rules_file);
|
rules = new RulesSet();
|
||||||
|
|
||||||
Transaction *modsecTransaction = new Transaction(modsec, rules);
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
modsecTransaction->processConnection("127.0.0.1");
|
Transaction *modsecTransaction = new Transaction(modsec, rules, nullptr);
|
||||||
if (modsecTransaction->intervention()) {
|
|
||||||
std::cout << "There is an intervention" << std::endl;
|
// 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;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -138,34 +160,45 @@ if (modsecTransaction->intervention()) {
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
#include "modsecurity/modsecurity.h"
|
#include "modsecurity/modsecurity.h"
|
||||||
|
#include "modsecurity/rules_set.h"
|
||||||
#include "modsecurity/transaction.h"
|
#include "modsecurity/transaction.h"
|
||||||
|
|
||||||
|
|
||||||
char main_rule_uri[] = "basic_rules.conf";
|
|
||||||
|
|
||||||
int main (int argc, char **argv)
|
int main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
ModSecurity *modsec = NULL;
|
ModSecurity *modsec = NULL;
|
||||||
Transaction *transaction = NULL;
|
Transaction *transaction = NULL;
|
||||||
Rules *rules = NULL;
|
RulesSet *rules = NULL;
|
||||||
|
|
||||||
modsec = msc_init();
|
modsec = msc_init();
|
||||||
|
|
||||||
rules = msc_create_rules_set();
|
rules = msc_create_rules_set();
|
||||||
msc_rules_add_file(rules, main_rule_uri);
|
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);
|
transaction = msc_new_transaction(modsec, rules, NULL);
|
||||||
|
|
||||||
msc_process_connection(transaction, "127.0.0.1");
|
// connection
|
||||||
msc_process_uri(transaction, "http://www.modsecurity.org/test?key1=value1&key2=value2&key3=value3&test=args&test=test");
|
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);
|
msc_process_request_headers(transaction);
|
||||||
msc_process_request_body(transaction);
|
|
||||||
msc_process_response_headers(transaction);
|
ModSecurityIntervention intervention;
|
||||||
msc_process_response_body(transaction);
|
intervention.disruptive = 0;
|
||||||
|
if (msc_intervention(transaction, &intervention)) {
|
||||||
|
fprintf(stderr, "There is an intervention\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
Loading…
x
Reference in New Issue
Block a user