我一直在寻找我的Wordpress网站上的防御。不出所料,有关此主题的大量文档。其中两个更好的指南似乎在这里:
http://moz.com/blog/the-definitive-guide-to-wordpress-security
显然:http://codex.wordpress.org/Hardening_WordPress
我想加强我对SQL注入的防御,因为我以前的网站成为这种攻击的牺牲品,并证明几乎不可能再次清理。
根据许多其他网站和类似指南上发表的评论,似乎有很多人不同意每一个实现这一目标的方式,因为有人咒骂。
我正在考虑将以下内容(在第一个提到的网站上找到)添加到我的网站,但似乎没有任何地方谈论执行此类操作的危险超出了编辑{{{}的明显危险1}}文件。
通过添加此功能,我可以期望松散或妥协的功能,如果没有,为什么这种代码不包含在基本的Wordpress安装中?如果添加这种东西没有害处,为什么不是每次安装都包含它,并允许知道他们正在做什么的开发人员在必要时删除它?
.htaccess
鉴于我有限的SQL知识,我担心打破数据库搜索功能,例如基于URL的查询
(例如在wp-admin中,如 ## SQL Injection Block ##
<IfModule mod_rewrite.c>
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} (\|%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} ^.*("|'|<|>|\|{||).* [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>
简而言之:
users.php?s=rachel&action=-1&new_role&paged=1&action2=-1
中限制SQL注入的危险是什么,即wordpress,函数或插件是否依赖于能够通过此类操作更改数据库。我有一个自定义主题并在很多页面上使用自定义php,但总是使用已知的wordpress函数来添加数据,而不是直接写入SQL查询或编辑。和
它会阻止在这种实例“How can I prevent SQL injection in PHP?”中使用的攻击(即保存读取 - 修改表单以将SQL注入数据库,当您编写此类POST时。 )
.htaccess
答案 0 :(得分:5)
由于以下原因,这没用:
定义规则以捕获每次可能的注射是不可能的。您仍然需要在应用程序代码(即绑定参数)中进行适当的防御以确保安全。如果您的代码得到了妥善保护,则无需进行此URL过滤。
这只会过滤网址。 SQL注入也可能来自POST变量。如上所述,您需要在应用程序代码中使用防御来防御它。
规则很可能会如此宽泛以至于阻止合法流量(例如,/article.php?title=us-declares-war
会被其中一条规则阻止)。