【发布时间】:2014-06-27 13:31:44
【问题描述】:
我一直在寻找我的 Wordpress 网站上的防御措施。毫不奇怪,有大量关于这个主题的文档。这里似乎有两个更好的指南:
http://moz.com/blog/the-definitive-guide-to-wordpress-security
显然:http://codex.wordpress.org/Hardening_WordPress
我想加强对 SQL 注入的防御,因为我以前的网站成为此类攻击的受害者,并且几乎无法再次清理。
从许多其他网站上发布的 cmets 和类似指南来看,似乎有很多人不同意实现这一目标的每一种方法,就像他们发誓一样。
我正在考虑将以下内容(在第一个提到的网站上找到)添加到我的网站,但除了编辑您的 @987654324 的明显危险之外,似乎没有人谈论 这样做的危险 @ 文件。
添加此功能可能会丢失或损害哪些功能,如果没有,为什么基本 Wordpress 安装中不包含此类代码?如果添加这种东西没有害处,为什么不是每个安装都包含它,并允许知道自己在做什么的开发人员在必要时将其删除??
## 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>
鉴于我有限的 SQL 知识,我担心会破坏数据库搜索功能,例如基于 URL 的查询
(例如在 wp-admin 中,例如 users.php?s=rachel&action=-1&new_role&paged=1&action2=-1
简而言之:
-
我的主要问题是在
.htaccess中限制 SQL 注入有什么危险,即 wordpress、函数或插件是否依赖于能够通过此类操作更改数据库。我有一个自定义主题并使用自定义php 在很多页面上,但总是使用已知的 wordpress 函数来添加数据,而不是直接写为 SQL 查询或编辑。
和
-
它是否会阻止在这种实例“How can I prevent SQL injection in PHP?”中使用的攻击(即,当您编写了这种 POST 代码时,为了节省读取——修改表单以将 SQL 注入数据库。)
if (isset($_POST['Dropdownmenu'])) { update_post_meta($postID , 'meta_value' , $thedropdownvalue );
【问题讨论】:
-
是什么让您认为代码可以保护您免受 SQL 注入?您无法从 htaccess 运行准备好的查询。
-
危险?一种虚假的安全感。
-
@JohnConde 这是在第一个提到的网站上发布的标题 **常见的黑客策略是 SQL 注入,这段代码可以阻止绝大多数尝试:**
标签: .htaccess security sql-injection firewall