假设我制作了一个简单的网页,上面只有“hello world”,没有按钮,没有表格,只有纯文本。现在我将这台计算机的私有 IP 地址通过服务器的端口 80 转发到我的路由器,这样用户现在就可以在世界任何地方输入我的公共 IP 地址并阅读我的“hello world”。安全风险是什么?我知道 Web 编程中存在许多安全风险,例如包含攻击、SQL 注入攻击、点击劫持和 target="_blank" 攻击,但这个 hello world 网站只是纯文本。那么风险是什么?
答案1
如果您在端口 80 上监听/绑定,则需要 CAP_NET_BIND_SERVICE 功能(绑定到端口 <1024)。传统上,这只允许 root/admin 用户(这是一个很大的安全问题)。
但是在现代 Linux 上,您可以以非特权、特殊用途的用户身份运行它,并赋予服务器此功能。
您还可以设置防火墙来限制每秒的连接数。(以减少 DOS)。
您可以在 Linux 上将其放入容器(例如 docker)中,以限制它使用的系统资源。
答案2
通过设置转发,您可以使互联网主机直接连接到您的机器。
因此,无论 Web 服务器提供什么,您都会增加直接攻击面。如果存在可以通过简单请求触发的错误,则该错误不会受到直接攻击。此外,您还会根据 Web 服务器在其他标头中发送的信息向潜在攻击者提供有关系统的其他信息。
此类信息的一个示例可能是Server
包含有关所用服务器软件的信息的标头,或者X-Powered-By
包含有关所用 PHP 版本和可能的操作系统的信息的标头。