分类:
2009-06-08 17:51:08
现在,修改了我们的执行语句.用_POST取代上面的执行变量, 我们现在把所有的用户数据通过make_safe函数,在以下代码:
现在,如果一个用户输入恶意的上述数据,查询看上去像下面这样,是完全无害. 以下查询将选择从数据库中的用户都和"\' or 1=1 #"相等的。
现在,除非你曾经提供了一个非常特殊的用户名和空白密码, 你的恶意攻击者将不能做任何损害的事. 像这样检查所有的数据通过你的数据库是非常重要的,尽管你认为这是已经很安全. HTTP头可以由用户伪造. 他们参照地址可以伪造.浏览器用户字符串可以伪造. 不要信任一条用户发送的数据,虽然,你认为是安全的。
文件操作
一些现今的网站的URL,是这个样子的:
"index.php"文件包括"contactus.html"文件,而且这个网站似乎正常运行. 不过,用户可以很容易地将"contactus.html"改成他们自己喜的东西. 举例来说, 如果您正在使用apache的mod_auth去保护文件,并储存你的密码在一个文件名为".htpasswd"(传统姓名)里 ,然后,如果用户访问以下地址, 脚本将输出你的用户名和密码
通过改变URL,在某些系统中, 在另一个可以运行php的服务器去 引用文件。害怕? 你应该害怕. 再次所幸的是,这是比较容易防范. 首先,你必须确保正确设置" open_basedir"在你的php.ini文件,并已设置"allow_url_fopen "为"Off" . 这将阻止大多数这类型的攻击,以保护远程文件和文件系统. 其次,如果可以的话,请检查文件要求对有效文件. 如果你限制了某些文件可以用这个脚本, 你可以节省不少后来恶果。
使用默认
当mysql是安装,它使用了默认用户的"root"和空白的密码. SQL Server的用途"sa"作为默认的用户和提供了一个空白的密码. 如果有人发现你的数据库服务器地址,并想尝试登录, 这些都是首次组合,他们会尝试. 如果你没有设定不同的密码(最好也和用户, 那么你很可能一天一觉醒来发现你的数据库已经被删除,所有用户号码被盗. 和所有软件一样,你如果使用的软件是默认用户名和密码,改变他们。
不要让安装文件在线
很多PHP项目用安装文件来安装. 其中有不少是一旦运行就自我删除的,但许多不是这样的,直到您删除安装文件. 如果让安装文件在线请注,他们可能仍然可用, 有人可以用它来复盖你的整个网站。
预见性
试想一下,你的网站让一个坏人盯上. 这个坏的人要打破你的管理区, 改变你的所有产品的描述如"这个产品很差劲" . 我猜测,他们首先会去 -万一它存在. 将你的敏感文件和文件夹像预测一样,他们很容易就受到黑客攻击。
为此,要确保你的姓名你的敏感文件和文件夹,让他们很难猜测. 把你的 admin 位于 或者更难去写的,但它为你的网站添加一些额外的保障.如果你需要一个记得快的地址, 但不用"admin"或"administration" (或你的用户名和密码) . 用一些不经常用的。
这同样适用于用户名和密码. 如果你有管理区,不要使用" admin "作为用户名和" password "作为密码. 针对一些特殊的情况,最好是两个字母和数字(有的黑客利用一些所谓的"词典攻击" , 尝试每一个字,在字典里的密码,直到他们找到密码。添加一对密码,使这一类攻击无用) . 这也是明智的去定期改变你的密码 (每两个月). 最后,要确保当一个用户名输入" Wrong Password " 当错误的密码输入时你的错误讯息给没有输出.如: " Unknown Username ",恶意用户都知道,他们已经成功地猜测一个有效的用户名. 对上述两种手段,采用通用的"登录错误"的错误信息 ,如果是用户名和密码输入错误的恶意用户就没有任何办法设想正确的用户和密码。
最后,彻底和完全地设想
你假设你的网站不会受到攻击,或面要对任何问题的话,但当最终出事,你将有大量的麻烦. 如果,在另一方面, 假设你的每一个客人到你的网站是为了攻击你,你永远处于战争状态, 你就能帮助你把你的网站做得安全,并准备得没有一点闪失。