在LAN服务器上确保PHP网站 - 确保会话,准备的语句和HTTPS足够



我正在开发一个只能从LAN访问的网站。我仍然希望使其尽可能安全。

从Web的角度来看,是否足以将会话添加到每个PHP文件,使用准备好的Mysqli语句并使用HTTPS?

我会更具体:

我正在检查每个PHP页面:

if(!isset($_SESSION['login']) || $_SESSION['UA'] != $_SERVER['HTTP_USER_AGENT'] || $_SESSION['IP'] != $_SERVER['REMOTE_ADDR'] || time() - $_SESSION['timeout']>=600){
session_unset();
session_destroy();
header('Location:index.php');

我也可以肯定的是,我还在每个页面上再生会话ID。因此,我正在检查用户的用户代理,IP地址,活动超时和会话变量"登录"。

对于MySQL连接,我主要使用准备好的语句(mysqli)来安全性和性能,如果我不使用已准备好的语句,我总是在处理客户端数据时进行real_escape_string()。

我还将仅允许HTTPS,然后检查$_SERVER['HTTPS'] = "on"

服务器永远不会设置任何cookie,除了phpssid。

这是我可以做的一切来确保我的网站安全,还是还有其他事情?我在网上发现了一些碎片,如何保护网站,但没有一个地方,所以这就是为什么我在这里问。

这个问题的更好站点可能是https://security.stackexchange.com/

尽管您的LAN Web服务器会更安全知道它不是防弹的。您的客户机器可能是LAN环境中不安全感的主要向量之一,特别是如果它们也可以访问并接触到外部互联网时。让他们对网络窃听或中间攻击之类的东西开放。

这是构建安全的Web应用程序和Web服务的指南

在您的Web服务器配置中,您可以阻止所有来自LAN的请求,而不是作为额外的预防措施。

除此之外,这似乎足够了。

确保您验证用户提供的尽可能多的数据,以确保其有效或用户应该给您的东西,如果您必须重新播放他们给您或数据的数据其他人给了您(即您将其存储在DB中以供稍后存储),然后确保您使用HTMLENT来制作它,以使JavaScript在数据中无法使用。如果将其数据放入JavaScript中,则使用添加扣。您所说的很多话也非常好。

作为随机的侧面注释,我会验证他们给您的会话ID是有效的会话ID IE ^[A-ZA-Z0-9] {26,40} $

您应该减少攻击表面。

看来您的PHP文件周围打开了,请要求。对于文件,您知道是在上面写一个代码块以"保护"它们的情况。

取而代之的是将所有这些移动到一个私人目录中,并且在Webroot中只有一个单点入口,例如index.php。由于这将是唯一的一点,因此您可以验证是否应在中心位置允许请求。这意味着您不能忘记一个文件以保护一个文件,如果要添加其他支票,可以在一个地方改善情况。

带有PHP文件(Apache HTTPD)的示例配置:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

在PHP脚本中,您可以使用$_SERVER['REQUEST_URI']$_SERVER['QUERY_STRING']

(例如

最新更新