4

我正在开发一个带有前端和后端的 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 网络服务器看到的是公共文件夹。

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

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

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

我唯一不满意的是私钥在服务器上可用,尽管不在公共 webroot 中。这是以某种方式未完成还是有其他方法可以做到这一点?

我错过了什么吗?

4

0 回答 0