我试着去阅读克拉洛林的源代码,以从他们的代码中学习。
在index.php文件中,他们在代码的第一行写道
unset($includePath); // prevent hacking你可以从here上看到完整的claroline源代码。
他们评论说,这条线路是用来防止黑客入侵的。
我不知道为什么他们要取消设置$includePath,而变量在该行之前从未定义过。
这行代码的实际用途是什么,它们指的是什么黑客类型?
发布于 2011-03-24 04:07:55
我自己没有看过源代码,但搜索一下就会得到以下类型的安全建议:
请注意,这依赖于启用的,它:
发布于 2011-03-24 04:04:59
在此之前,可能不会在代码中设置该变量,但如果启用了register_globals,恶意用户可能会在URL中设置该变量。
发布于 2011-03-24 06:11:49
听起来你主要是在寻找教育信息,所以这里有一个关于register_globals过去做什么的小解释……为什么它会在那里。以及为什么它不再存在(并且你永远不应该打开它)。
变量通过$_GET和$_POST (或$_REQUEST)数组传入...register_globals所做的就是通过获取这些数组的所有元素,并将它们放入全局命名空间中--即,使它们成为“常规”全局变量--使编程变得更容易,这样$_GET['includes']就可以很容易地被简单地引用为$includes。
那是在intarweb的幸福日子里,当时互联网还没有像现在这样迅速发展,技术还不是那么广为人知,知道如何黑网站的人很少,也没有人编写会自动黑网站的蠕虫病毒。
这是非常不安全的--因为如果一个懒惰的程序员没有费心正确地初始化所有变量(例如,检查是否设置了$includes,然后在它被正确初始化之前使用它),那么这些不正确初始化的变量中的任何一个都可以被设置为黑客想要的任何值。PHP当时是相当新的,许多业余爱好者都在写代码-经常做的事情还包括在SQL查询中忘记正确转义变量。因此,一个安全缺陷通常很容易跟进另一个,允许黑客(或自动脚本)获得越来越深的访问级别。
大约在2001年左右,人们开始非常认真地警告register_globals的后果--所以这是一个相当古老的问题,但保持警惕仍然是件好事,特别是对于那些在安全性方面没有可靠声誉的应用程序。
https://stackoverflow.com/questions/5410932
复制相似问题