代码之家  ›  专栏  ›  技术社区  ›  Konstantin

403在WordPress中使用mod_rewrite时出现禁止错误

  •  0
  • Konstantin  · 技术社区  · 9 年前

    我使用这个.htaccess指令来防止对我的WordPress博客的SQL注入攻击:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
    RewriteRule ^(.*)$ - [F,L]
    RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
    RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
    RewriteCond %{QUERY_STRING} tag\= [NC,OR]
    RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
    RewriteCond %{QUERY_STRING} http\:  [NC,OR]
    RewriteCond %{QUERY_STRING} https\:  [NC,OR]
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
    RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
    RewriteRule ^(.*)$ - [F,L]
    </IfModule>
    

    我的博客使用JavaScript重定向,使用以下查询字符串参数将访问者从打开的页面重定向到博客: redir=1&ref=

    因此,如果访问者来自非推荐集,例如他在浏览器中键入了标题,“ref”参数通常为空。在其他情况下,“ref”参数有一个值,它为我显示访问者来自何处。

    我的问题是,在第一次访问时,我收到403错误消息:

    Forbidden
    
    You don't have permission to access / on this server.
    
    Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
    

    从.htaccess中删除上述指令后,问题也消失了。但是,我希望使用这些指令的修改版本来防止SQL注入攻击。我应该修改哪些行以防止攻击并消除“403禁止”错误消息?

    1 回复  |  直到 9 年前
        1
  •  0
  •   Croises    9 年前

    更改该行:

    RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
    

    致:

    RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*).* [NC,OR]