存储个人信息的Web应用程序的安全性

时间:2013-03-29 14:36:34

标签: php postgresql web-applications security

我正在开发一个带有前端和后端的Web应用程序。公众可以在前端存储信息,某些人可以管理插入的细节并进行编辑。

由于应用程序的个人信息安全性质非常重要。我想知道我采取的确保信息安全的措施是否合适。

1 - '低级别安全性
该域具有自己的SSL证书和DNSSEC。该应用程序在私有VPS上运行;所有密码(unix用户,数据库用户等)都非常强大。

2 - 目录结构

 /data
    |- lib                   // store php classes and runtime information
    |    |- constants.php    // stores, among others, the private key
    |- cnt                   // logical content
    |- public                // the public root where nginx directs to
    |      |- img            // images
    |      |- res            // other resources
    |      |- index.php      // only contains include('../private.php');
    |- private.php           // the real webapplication root

因此,如果PHP出现问题导致代码泄露并破坏目录结构;有人可以通过NGINX-webserver看到的唯一东西就是公共文件夹。

3 - 数据库
存储在postgreSQL中的信息使用openssl_encrypt和cipher SHA_256_AES加密,私钥存储在php文件中(请参阅目录结构/data/lib/constants.php)因此,如果数据库遭到入侵/被盗,则数据无法读取私钥。

4 - 管理用户
Loggedin用户获得存储在cookie中的sha1会话ID;在服务器上是存储的会话的登录状态。获取会话(ID)可以通过表单完成;它只通过互联网发送sha1编码的,通过javascript,密码哈希。当然密码是盐渍的,并且有一定的规则(长度> 8,特殊字符等)

5 - XSS,CSRF,$ _POST
正在过滤每个用户输入;服务器上的更改只能通过post-request进行。每个表单都有一个随机生成的CSRF安全令牌。

我唯一不满意的是私钥在服务器上可用,但不在public-webroot中。这是不是已经完成了,还是有其他方法可以做到这一点?

我错过了什么吗?

0 个答案:

没有答案