我的Cpanel服务器上出现此错误。它不会在每次更新时发生,只是一些SQL。
[Sat Mar 11 03:48:18.409435 2017] [:error] [pid 31376:tid 140202228020992] [client 180.253.119.171] ModSecurity:拒绝访问代码500(阶段2)。模式匹配"((alter | create | drop)[[:space:]] +(column | database | procedure | table)| delete [[:space:]] + from | update。+ set。+ = )"在ARGS:描述。 [file" /usr/local/apache/conf/modsec2.user.conf"] [line" 254"] [id" 300015"] [rev&# 34; 1"] [msg"通用SQL注入保护"] [严重性"关键"] [主机名""] [uri" / app / marketwatch / edit-listing.php"] [unique_id" WMO50kPhgfkAAHqQRtMAAACP"]
通常会导致SQL注入错误以及如何摆脱此错误?
答案 0 :(得分:1)
使用这篇文章解决它: 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