ModSecurity 给出通用 SQL 注入保护错误
ModSecurity gives Generic SQL injection protection error
我在我的 Cpanel 服务器上遇到了这个错误。它不会在每次更新时发生,只是一些 SQL.
[Sat Mar 11 03:48:18.409435 2017] [:error] [pid 31376:tid 140202228020992] [client 180.253.119.171] ModSecurity: Access denied with code 500 (phase 2). Pattern match "((alter|create|drop)[[:space:]]+(column|database|procedure|table)|delete[[:space:]]+from|update.+set.+=)" at ARGS:description. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "254"] [id "300015"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] [hostname ""] [uri "/app/marketwatch/edit-listing.php"] [unique_id "WMO50kPhgfkAAHqQRtMAAACP"]
什么通常会导致 SQL 注入错误以及如何消除此错误?
使用这篇文章解决它:
https://othermachines.com/blog/drupal-modsec-and-post-wouldnt-save
因此,mod_security 得到了误报。我不知道它以某种方式使用 modsec 规则 ID 300015 而不是像往常一样使用 300016 并陷入错误的安全规则。您可以注意到 [id "300015"]
中的 id。所以我在文件 /usr/local/apache/conf/modsec2/whitelist.conf
中编辑了 modsec 白名单并添加了这个:
# Disable generic SQL injection rules globally
# for Drupal content admin
<LocationMatch /node/[0-9]+/edit> #might vary depending your code
<IfModule mod_security2.c> # This is the important part
SecRuleRemoveById 300015
</IfModule>
</LocationMatch>
<LocationMatch /admin>
<IfModule mod_security2.c>
SecRuleRemoveById 300015
</IfModule>
</LocationMatch>
之后不要忘记重新启动 Apache,这样它就会生效。
更新
不知何故配置位置更改为/etc/apache2/conf.d/modsec2/whitelist.conf
我在我的 Cpanel 服务器上遇到了这个错误。它不会在每次更新时发生,只是一些 SQL.
[Sat Mar 11 03:48:18.409435 2017] [:error] [pid 31376:tid 140202228020992] [client 180.253.119.171] ModSecurity: Access denied with code 500 (phase 2). Pattern match "((alter|create|drop)[[:space:]]+(column|database|procedure|table)|delete[[:space:]]+from|update.+set.+=)" at ARGS:description. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "254"] [id "300015"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] [hostname ""] [uri "/app/marketwatch/edit-listing.php"] [unique_id "WMO50kPhgfkAAHqQRtMAAACP"]
什么通常会导致 SQL 注入错误以及如何消除此错误?
使用这篇文章解决它: https://othermachines.com/blog/drupal-modsec-and-post-wouldnt-save
因此,mod_security 得到了误报。我不知道它以某种方式使用 modsec 规则 ID 300015 而不是像往常一样使用 300016 并陷入错误的安全规则。您可以注意到 [id "300015"]
中的 id。所以我在文件 /usr/local/apache/conf/modsec2/whitelist.conf
中编辑了 modsec 白名单并添加了这个:
# Disable generic SQL injection rules globally
# for Drupal content admin
<LocationMatch /node/[0-9]+/edit> #might vary depending your code
<IfModule mod_security2.c> # This is the important part
SecRuleRemoveById 300015
</IfModule>
</LocationMatch>
<LocationMatch /admin>
<IfModule mod_security2.c>
SecRuleRemoveById 300015
</IfModule>
</LocationMatch>
之后不要忘记重新启动 Apache,这样它就会生效。
更新
不知何故配置位置更改为/etc/apache2/conf.d/modsec2/whitelist.conf