web 应用程序的 php 安全性 [关闭]

问题描述 投票:0回答:0

所以,通过一系列未知事件,我发现自己现在正在为业务线应用程序开发 Web 应用程序。我只是一个爱好 php 的作家,我不使用 PDO 或任何框架(主要是因为我从来没有时间深入研究它们)。因此,我尽我所能编写了该应用程序。该工具提供了出色的工作,所以这不是问题。 Security 不过,我希望您能了解我的想法的安全性。

首先,如果不登录,则无法访问该工具的任何部分。该域具有 SSL 证书并通过 Azure 托管。作为第一道防线,我使用 web.config 来限制基于 IP 的访问,以将其托管为内网解决方案。

其次,登录基于here可用的教程。简而言之,在注册时,会生成一个随机盐,对密码进行哈希处理,然后再次使用附加的盐进行哈希处理。该值与盐一起存储在数据库中。提交登录表单后,密码将通过 javascript 进行哈希处理。此值附加到新的隐藏输入中的表单,并清除旧密码字段以确保密码不会以未加密的方式发送。然后使用电子邮件地址从数据库中获取密码和盐,并进行引用。在登录时,登录字符串保存在会话中,用于在用户登陆的每个页面上验证用户。此登录字符串基于密码及其 IP 地址的哈希值。此登录字符串也保存到 cookie 中以用于自动登录目的。自动登录的工作原理是将登录字符串存储在 cookie 和登录表中。如果用户访问应用程序,cookie 将检查数据库中的字符串。如果找到,它会检查其 IP 地址。如果它通过验证,则用户已登录。

登录页面上的表单本身使用 filter_input 进行过滤,如下所示:

$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);

之后查询本身是一个 mysqli 准备语句。

接下来,登录后,安全是根据每个页面的login_check函数来确保用户登录的。在index.php中我还定义了一个logged = true值:

define('loggedin', TRUE);

用于在每个页面上验证它不是直接访问的,如果是,则重定向到'/'

if(!defined('loggedin')) {
    header("Location: /");
    die();
}

使用 get 或 post 的所有其他形式的数据库查询(我不使用 env 或服务器),查询已准备就绪。还准备了使用户能够将数据输入数据库的所有表格;显示 html 结果的表单由 htmlentities() 清理。

我现在不知道我是否可以做更多的事情来保护应用程序。它将处理敏感信息,因此我希望您能提供我可以做些什么来加强系统的意见:)

非常感谢!

php mysql security cookies
© www.soinside.com 2019 - 2024. All rights reserved.