网站安全速查手册

BatM3 发布于 2012/06/18 11:20
阅读 740
收藏 13

收藏!数据建模最全知识体系解读!>>>

 

原文地址 http://tech20.b24.cn/page/web_safe_manual/

版本 1.0 ,手册会不定期更新,欢迎至原文地址查看最新版本。 手册维护: brantx

1.代码安全

1.1 代码中的安全隐患

部分函数可能存在安全隐患,在使用时应该多加留意。 php中这些函数有: eval()、assert()、“、system()、exec()、shell_exec()、passthru()、 escapeshellcmd()、pcntl_exec() 等.

详细请见: 常见的PHP代码执行漏洞

1.2 分离可执行代码和上传文件目录

为避免黑客通过上传文件漏洞开后门。 建议将可执行的php/asp 等脚本和静态文件分别存放:将可执行脚本放置在 http 无法访问的目录; 将上传文件目录和静态文件目录设定不可执行权限。

目前常用的 MVC 架构都可以实现执行脚本的分别存放,如 Codeiginiter, b2Core 等。

1.3 修改默认后台地址

当使用开源软件时,请修改默认的管理后台登录地址。

2. 数据库安全

2.1  避免注入式漏洞

注入式攻击已经不再是高级黑客的专利,大量的黑客网站已经将注入攻击技术基本普及。注入式漏洞的防范已经是网站安全的重中之重。

可以通过  grep 方式找出所有网站中所有 SQL 语句,确定他们被执行前,所传递的参数进行了 escape 操作。 采用一些安全的 MVC 框架可以大大简化这一操作。

2.2  修改 phpmyadmin 等数据库工具的地址或限制访问

phpmyadmin 已经是 php+mysql 网站必备的数据管理工具。 但是在 ubuntu 服务器默认的配置中,可以直接通过 http://域名/phpmyadmin 进行访问。简单的修改地址或者限制访问可以避免这一隐患。

2.3  不要在程序中使用 root 连接数据库

Mysql 中 root 账户有极高的权限,被注入后黑客以可以通过 root 账户的  put_file 和 read_file 函数对服务器上的文件进行读写。

3. 高级用户密码安全

对于安全要求高的网站,建议在完成上述安全防护之外还应在 3.1)服务器端、3.2)传输中和 3.3)浏览器端进行加密,另外 3.4 ) 进行图片验证或限制输入密码错误次数。

3.1  服务端用户密码加密

虽然还有大量网站用明文储存密码,但是 csdn 用户密码泄漏事件以后,已经有了很大的改观。 建议比较通用的方式为  salt + 加密函数 的方式。

常用的加密函数有 sha1 , md5 等等。salt 为一定长度字符串。 通过 md5 ( salt + 密码 ) 的方式进行加密。 这样可以 md5 编码字符串的长度,以放置被人采用字典方式获取密码原文。

3.2  传输过程加密

http 为明文传输协议,在传输过程中容易被人截获并获取其中的帐号和密码。 建议采用 https 协议对帐号密码的传输过程加密。

3.3  浏览器端加密

浏览器端加密可以保证在服务器端也不知到密码的原文究竟是什么,避免密码在服务端加密并存储前被截获。加密方式通常为调用 javascript 加密包进行加密。

3.4 进行图片验证或限制输入密码错误次数

完成 a) b) c) 过程后可以大大降低密码被泄露的危险。 但是无法阻止暴力破解。 应对暴力破解的方式一般为采用图片验证码 Picatcha  和 限制输入密码输入错误的次数。  也可以两种方式同时使用。

欢迎提供建议补充。

加载中
0
HelloChina
HelloChina
  好东西呀,看一看有点印象也是好了
0
durban
durban
留着,谢谢啦 呵呵
返回顶部
顶部