我正在开发一个带有前端和后端的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中。这是不是已经完成了,还是有其他方法可以做到这一点?
我错过了什么吗?