热门关键字:   网站安全  黑客攻防  安全漏洞  系统安全  网络安全
站外
广告
域名申请虚拟主机 信息安全 域名注册 云主机 网络安全技术 企业网络安全 站外
广告
文字广告位招租 文字广告位招租 文字广告位招租 文字广告位招租 云安全

网站数据库账户分离防止前台入侵

发布时间:2011-12-19 09:20文章来源:safe121.com文章作者:秩名 点击次数:
摘要:刚才一个朋友网站被入侵了,目测是注入到了管理员密码,之后你懂的。 由于他网站程序比较复杂,不好修复。。 于是突发奇想。。把前台的mysql跟后台的mysql用户分开 前台的mysql用户设置成禁止读取admin表,文章之类的都只读,唯一前台可写的就是评论。 后台...

刚才一个朋友网站被入侵了,目测是注入到了管理员密码,之后你懂的。
由于他网站程序比较复杂,不好修复。。
于是突发奇想。。把前台的mysql跟后台的mysql用户分开
前台的mysql用户设置成禁止读取admin表,文章之类的都只读,唯一前台可写的就是评论。
后台的mysql设置成完全权限
下面说下步骤(以wordpress为示范)
1.进入phpmyadmin,之后找到要找的数据库,之后选择按表分配权限,权限如图所示:

下图为user表针对前台用户的设置

前台这么设置完了,该设置后台了。

先新建个mysql账户,密码不要太复杂,后面还有用。。

下面对wordpress代码进行改造

打开wp-config.php

将define(‘DB_USER’,'你的数据库用户名’);

改为

 

  1. if(defined(‘WP_ADMIN’)){ 
  2. define(‘DB_USER’,'上一步中所创建的用户名’); 
  3. else 
  4. define(‘DB_USER’,'你的数据库用户名’); } 

 

define(‘DB_PASSWORD’, ‘你的数据库密码’);

改为

  1. if(defined(‘WP_ADMIN’)){ 
  2. session_start(); 
  3. define(‘DB_PASSWORD’,$_SESSION["request-mysql-password"]); 
  4. else 
  5. define(‘DB_PASSWORD’, ‘你的数据库密码’); } 

然后打开wp-login.php

最顶端添加一句

  1. <?php 
  2. define(‘WP_ADMIN’,true); 
  3. session_start(); 
  4. if ($_REQUEST["act"] == “clean”){ 
  5. $_SESSION["request-mysql-password"] = “”; 
  6. header(“Location: wp-login.php”); 
  7. if ($_SESSION["request-mysql-password"] == “”){ 
  8. ?> 
  9. <? if ($_REQUEST["act"] == “ckl”) 
  10. { $_SESSION["request-mysql-password"] = $_POST["mp"]; 
  11. header(“Location: wp-login.php”); 
  12. ?> 
  13. <form method=”post” action=”?act=ckl><input type=”password” name=”mp” id=”mp”><input type=”submit” value=”submit”></form> 
  14. <? 
  15. exit(); 
  16. ?> 

这样每次登录后台的时候都需要输入权限高的用户的mysql密码。即使黑客在网站里留下了后门,也是只读权限。。

如果输入错误,就输入wp-login.php?act=clean清除错误的session

标签分类:

上一篇:Vsftpd安全总结
下一篇:xml读取任意文件漏洞及补救