1 回答
首先,您要包含一个完整的 HTML 文件。在浏览器中执行“查看源代码”,您会在文档正文中找到<html>
、<body>
等。这会导致各种混乱,并且不知道每个浏览器将如何处理它。简而言之:这是错误的。
其次,看看你的例子,我认为你应该阅读W3fools page。花点时间真正阅读它。时间不长,将来可能会为您节省很多悲伤。
第三,通过访问http://snapi.vv.si/public_html/index.php?page=/etc/passwd
,我会收到一条消息,告诉我您的主目录 ( /home/u460512479
) 是什么。之后,我可以用来http://snapi.vv.si/public_html/index.php?page=/home/u460512479/<anything>
从您的主目录(不仅仅是网络!)目录中获取内容。任何对您的网络服务器可读的东西都对全世界都是可读的,只要它们获得文件名(可以猜到,蛮力,......)。永远,永远,相信用户的数据,即,无论你通过什么$_GET
,$_POST
等等。
您需要的最低安全性是从 中删除所有目录信息$page
,例如使用basename()
. 这仍然使您的 Web 目录处于打开状态,但至少可以保护其他目录。但是,完全控制会更好。例如,可以以这种方式访问的页面数组。
记住:安全必须从一开始就做好,否则你会发现自己永远在修补和弄乱你的源代码。