5

我认为黑客(或脚本小子)利用网站代码库的泄漏攻击了我的网站。数据库中的帖子已更改,因此它们包含以下 html:

<meta http-equiv="refresh" content="0;url=http://example.com"/>

但我现在无法重写系统。未来有哪些策略可以防止这种情况发生?

我正在考虑将管理脚本迁移到允许访问某些域的子域。或者使用 mod_security SecFilterScanPOST 并扫描所有包含 http-equiv 等的发布请求。或者只允许来自我的服务器或所有服务器的发布请求?

谢谢你。

4

3 回答 3

3

第一步可能是调查代码在哪里注入,这可以帮助您识别根子句是什么 -

  1. 如果您的网站从数据库中获取内容,并且注入的标签作为数据库内容的一部分被检索,则您的网站可能存在 SQL 注入漏洞或其他漏洞,允许攻击者更改那里的内容。

  2. 如果每个 PHP 文件中都有标签,则意味着攻击者可以访问您的文件系统。他可以访问您的 FTP 或 telnet 或任何其他管理控制台,或者您的网站存在允许攻击者在网站上修改/创建文件的漏洞。

  3. 您的服务器也可能存在允许攻击者进行此类访问的漏洞。

在您确定根本原因后,相应地修复它 =)

以下是一些通用建议,可帮助防止同样的事情再次发生:

  1. 通过代码审查、渗透测试或一些自动扫描检查您的网站和服务器是否存在漏洞,并相应地修复它们。

  2. 及时安装更新、修补程序、安全补丁。保持更新,更新,更新,更新......

  3. 在文件系统上分配适当的文件夹权限(读写、只读、无访问权限),并仅向用户授予必要的权限(最小权限原则)。

    • 例如,您可以考虑使 Web 服务器用户只能读取除上传文件夹之外的所有 Web 内容文件夹。
    • 配置文件通常不需要 Web 服务器用户可写。通常它们只能由管理员写入。还要注意不要让此类文件的内容可以通过 Web 服务器访问(即通过您的 Web 服务器的 http:// url)。将它们直接放在 Web 内容根目录之外是个好主意
    • 将任何上传文件夹放在 Web 内容根目录之外也是一个好主意
    • 也挖掘文件的所有者,因为所有者可以自由更改文件的权限。
  4. 使用第 3 方组件(例如 Wordpress/Joomla 插件)时要小心。仅在您信任发布者的情况下使用。仅从主站点下载。记住也要让它们保持最新。如有必要,禁用并删除它们

  5. 限制对管理控制台和服务的访问,如 FTP、Telnet、数据库管理控制台(例如 phpMyAdmin)等。为它们分配好的密码。最好不要让任何未经授权的人访问它(例如使用防火墙或配置中设置的 IP 限制,或将其隐藏在 VPN 后面)

    • 实际上,在传输密码(尤其是管理员密码)时,您应该避免使用任何明文协议。它们通常有一个加密的替代方案,例如 Telnet -> SSH、FTP -> SFTP/FTP、HTTP/HTTPS。
    • 确实应该避免从 Internet 访问数据库端口。只有极少数情况下你会需要这个。在大多数情况下,将其配置为在环回接口上侦听...
于 2013-02-15T09:55:56.607 回答
2

有关XSS输入验证,请参阅 OWASP 。

不要清理您的输入-您希望<meta http-equiv="refresh" content="0;url=http://example.com"/>数据库中的原始数据-而是将其视为不受信任的数据并在输出时对其进行转义/解除。

于 2013-02-15T09:38:16.767 回答
1

如果您不想在从 db 读取数据时转义数据(您应该这样做),这是一个懒惰的解决方案。

function escape_deep(&$value)
{
 $value = htmlspecialchars($value);
}

array_walk_recursive($_GET, 'escape_deep');
array_walk_recursive($_POST, 'escape_deep');
于 2013-02-15T09:02:35.653 回答