我正在尝试在我的域的子文件夹中设置一个管理 Web 应用程序/admin
。
我想确保这个应用程序尽可能的安全(不是因为它绝对必要,而是因为我有兴趣学习网络安全)并且我希望它能够在网站上运行https
,而网站的其余部分(非管理位置)应该是http
。
我有nginx按照说明进行设置这个答案:
# non ssl locations
server {
server_name test.romeovansnick.be;
listen 80;
root /var/www/test;
location / {
index index.html;
}
location /admin {
return 301 https://test.romeovansnick.be/admin/;
}
}
# secure server
server {
listen 443 defaul_server ssl;
server_name test.romeovansnick.be;
root /var/www/test;
location / {
return 301 http://$server_name$request_uri;
}
location /admin {
index admin.php;
# add_header Strict-Transport-Security max-age=31536000;
add_header X-Frame-Options DENY;
}
# ssl setup ...
# php setup ...
}
问题是,我认为我仍然容易受到中间人攻击。至少根据 OWASP,简单地重定向用户并不完全安全。
HSTS
我以为可以通过将标头添加到位置来降低中间人攻击的风险/admin
,但这会导致支持该功能的浏览器出现重定向循环。我想是因为浏览器将其应用于整个域test.romeovansnick.be
(或者我测试得不够)。
我怎样才能使我的网络服务器更安全,抵御此类攻击?
答案1
HSTS 是全域性的,而不是子目录性的。如果您希望在其上使用 HSTS,请使用其他域或子域。
例如 admin.test.romeovansnick.be 或 admintest.romeovansnick.be。或者,花 0.01 欧元通过隐蔽性获得额外的安全性,使用 john.romeovansnick.be 或其他难以猜测的域名。;-)
答案2
如果/admin
它只能由网站/网络应用程序的管理员访问,那么如果可以避免的话,我就不会通过 nginx 将其暴露到互联网上。