mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-29 19:24:29 +03:00
Adds support to SecWebAppID
This commit is contained in:
@@ -52,7 +52,7 @@ class Collection {
|
||||
virtual void del(const std::string& key) = 0;
|
||||
|
||||
virtual std::unique_ptr<std::string> resolveFirst(
|
||||
const std::string& var) = 0;
|
||||
const std::string& var) = 0;
|
||||
|
||||
virtual void resolveSingleMatch(const std::string& var,
|
||||
std::vector<const Variable *> *l) = 0;
|
||||
@@ -62,52 +62,129 @@ class Collection {
|
||||
std::vector<const Variable *> *l) = 0;
|
||||
|
||||
|
||||
/* store */
|
||||
virtual void store(std::string key, std::string compartment,
|
||||
std::string value) {
|
||||
std::string nkey = compartment + "::" + key;
|
||||
store(nkey, value);
|
||||
}
|
||||
|
||||
|
||||
virtual void store(std::string key, std::string compartment,
|
||||
std::string compartment2, std::string value) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + key;
|
||||
store(nkey, value);
|
||||
}
|
||||
|
||||
|
||||
/* storeOrUpdateFirst */
|
||||
virtual bool storeOrUpdateFirst(const std::string &key,
|
||||
std::string compartment, const std::string &value) {
|
||||
std::string nkey = compartment + "::" + key;
|
||||
return storeOrUpdateFirst(nkey, value);
|
||||
}
|
||||
|
||||
|
||||
virtual bool storeOrUpdateFirst(const std::string &key,
|
||||
std::string compartment, std::string compartment2,
|
||||
const std::string &value) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + key;
|
||||
return storeOrUpdateFirst(nkey, value);
|
||||
}
|
||||
|
||||
|
||||
/* updateFirst */
|
||||
virtual bool updateFirst(const std::string &key, std::string compartment,
|
||||
const std::string &value) {
|
||||
std::string nkey = compartment + "::" + key;
|
||||
return updateFirst(nkey, value);
|
||||
}
|
||||
|
||||
|
||||
virtual bool updateFirst(const std::string &key, std::string compartment,
|
||||
std::string compartment2, const std::string &value) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + key;
|
||||
return updateFirst(nkey, value);
|
||||
}
|
||||
|
||||
|
||||
/* del */
|
||||
virtual void del(const std::string& key, std::string compartment) {
|
||||
std::string nkey = compartment + "::" + key;
|
||||
del(nkey);
|
||||
}
|
||||
|
||||
|
||||
virtual void del(const std::string& key, std::string compartment,
|
||||
std::string compartment2) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + key;
|
||||
del(nkey);
|
||||
}
|
||||
|
||||
|
||||
/* resolveFirst */
|
||||
virtual std::unique_ptr<std::string> resolveFirst(const std::string& var,
|
||||
std::string compartment) {
|
||||
std::string nkey = compartment + "::" + var;
|
||||
return resolveFirst(nkey);
|
||||
}
|
||||
|
||||
|
||||
virtual std::unique_ptr<std::string> resolveFirst(const std::string& var,
|
||||
std::string compartment, std::string compartment2) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + var;
|
||||
return resolveFirst(nkey);
|
||||
}
|
||||
|
||||
|
||||
/* resolveSingleMatch */
|
||||
virtual void resolveSingleMatch(const std::string& var,
|
||||
std::string compartment, std::vector<const Variable *> *l) {
|
||||
std::string nkey = compartment + "::" + var;
|
||||
resolveSingleMatch(nkey, l);
|
||||
}
|
||||
|
||||
|
||||
virtual void resolveSingleMatch(const std::string& var,
|
||||
std::string compartment, std::string compartment2,
|
||||
std::vector<const Variable *> *l) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + var;
|
||||
resolveSingleMatch(nkey, l);
|
||||
}
|
||||
|
||||
|
||||
/* resolveMultiMatches */
|
||||
virtual void resolveMultiMatches(const std::string& var,
|
||||
std::string compartment, std::vector<const Variable *> *l) {
|
||||
std::string nkey = compartment + "::" + var;
|
||||
resolveMultiMatches(nkey, l);
|
||||
}
|
||||
|
||||
|
||||
virtual void resolveMultiMatches(const std::string& var,
|
||||
std::string compartment, std::string compartment2,
|
||||
std::vector<const Variable *> *l) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + var;
|
||||
resolveMultiMatches(nkey, l);
|
||||
}
|
||||
|
||||
|
||||
/* resolveRegularExpression */
|
||||
virtual void resolveRegularExpression(const std::string& var,
|
||||
std::string compartment, std::vector<const Variable *> *l) {
|
||||
std::string nkey = compartment + "::" + var;
|
||||
resolveRegularExpression(nkey, l);
|
||||
}
|
||||
|
||||
|
||||
virtual void resolveRegularExpression(const std::string& var,
|
||||
std::string compartment, std::string compartment2,
|
||||
std::vector<const Variable *> *l) {
|
||||
std::string nkey = compartment + "::" + compartment2 + "::" + var;
|
||||
resolveRegularExpression(nkey, l);
|
||||
}
|
||||
|
||||
std::string m_name;
|
||||
};
|
||||
|
||||
} // namespace collection
|
||||
|
@@ -54,28 +54,48 @@ class Collections :
|
||||
void storeOrUpdateFirst(const std::string& collectionName,
|
||||
const std::string& variableName,
|
||||
const std::string& targetValue);
|
||||
void storeOrUpdateFirst(const std::string& collectionName,
|
||||
const std::string& variableName,
|
||||
const std::string& appid,
|
||||
const std::string& targetValue);
|
||||
bool storeOrUpdateFirst(const std::string &key, const std::string &value);
|
||||
bool updateFirst(const std::string &key, const std::string &value);
|
||||
void del(const std::string& key);
|
||||
std::unique_ptr<std::string> resolveFirst(const std::string& var);
|
||||
std::unique_ptr<std::string> resolveFirst(const std::string& collectionName,
|
||||
const std::string& var);
|
||||
std::unique_ptr<std::string> resolveFirst(const std::string& collectionName,
|
||||
const std::string &appid, const std::string& var);
|
||||
|
||||
void resolveSingleMatch(const std::string& var,
|
||||
std::vector<const Variable *> *l);
|
||||
void resolveSingleMatch(const std::string& var,
|
||||
const std::string& collection,
|
||||
std::vector<const Variable *> *l);
|
||||
void resolveSingleMatch(const std::string& var,
|
||||
const std::string& collection,
|
||||
const std::string& appid,
|
||||
std::vector<const Variable *> *l);
|
||||
|
||||
void resolveMultiMatches(const std::string& var,
|
||||
std::vector<const Variable *> *l);
|
||||
void resolveMultiMatches(const std::string& var,
|
||||
const std::string& collection,
|
||||
std::vector<const Variable *> *l);
|
||||
void resolveMultiMatches(const std::string& var,
|
||||
const std::string& collection,
|
||||
const std::string& appid,
|
||||
std::vector<const Variable *> *l);
|
||||
|
||||
void resolveRegularExpression(const std::string& var,
|
||||
std::vector<const Variable *> *l);
|
||||
void resolveRegularExpression(const std::string& var,
|
||||
const std::string& collection,
|
||||
std::vector<const Variable *> *l);
|
||||
void resolveRegularExpression(const std::string& var,
|
||||
const std::string& collection,
|
||||
const std::string& appid,
|
||||
std::vector<const Variable *> *l);
|
||||
|
||||
/**
|
||||
* This is a special collection to host the transaction variables.
|
||||
|
@@ -340,6 +340,11 @@ class RulesProperties {
|
||||
from->m_secArgumentSeparator.m_value;
|
||||
}
|
||||
|
||||
if (from->m_secWebAppId.m_set == true) {
|
||||
to->m_secWebAppId.m_value = \
|
||||
from->m_secWebAppId.m_value;
|
||||
}
|
||||
|
||||
if (from->m_unicodeMapTable.m_set == true) {
|
||||
to->m_unicodeMapTable.m_unicode_map_table = \
|
||||
from->m_unicodeMapTable.m_unicode_map_table;
|
||||
@@ -380,7 +385,6 @@ class RulesProperties {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (to->m_auditLog) {
|
||||
std::string error;
|
||||
to->m_auditLog->merge(from->m_auditLog, &error);
|
||||
@@ -480,6 +484,7 @@ class RulesProperties {
|
||||
ConfigString m_uploadDirectory;
|
||||
ConfigString m_uploadTmpDirectory;
|
||||
ConfigString m_secArgumentSeparator;
|
||||
ConfigString m_secWebAppId;
|
||||
std::vector<actions::Action *> m_defaultActions[8];
|
||||
std::vector<modsecurity::Rule *> m_rules[8];
|
||||
ConfigUnicodeMap m_unicodeMapTable;
|
||||
|
Reference in New Issue
Block a user