Best practices against hacking
发表于: 2009年2月20日星期五, 上午6:46
最近,很多网站都在建设各种网络应用软件,以期为用户提供更好的服务,这其中尤以各种创建、编辑和管理内容的应用软件为多。这些系统提供了很多基于用户输入信息的强大互动特性,值得注意的是,考虑安全问题,避免第三方的恶意攻击并确保最佳的用户体验也变得更为重要。
黑客攻击的类型及拦截方式:
黑客可以采取多种不同的攻击方式部分或全部控制一个网站。一般来说,最常见和最危险的是 SQL 植入( injection) 和跨站点脚本( XSS,cross-site scripting ) 。
SQL 植入是一种在网络应用程序中植入恶意代码的技术,它利用数据库层面的安全漏洞以达到非法控制数据库目的。这种技术非常强大,它可以操纵网址(查询字符串)或其他任何形式(搜索,登录,电子邮件注册)以植入恶意代码。您可以在网络应用安全联盟(英文)中找到一些关于 SQL 植入的例子。
为避免此类黑客攻击的发生的确有法可循。举例来说,在前端界面和后端数据库之间增加一个“中间层”就是一种很好的做法。在 PHP 中,PDO(PHP Data Objects)扩展通常与参数(有时被称作placeholder或绑定变量)共同发生作用,而不是直接将用户输入做为命令语句。另一种极为简单的技术 是字符转义,通过这种方式,所有可以直接影响数据库结构的危险字符都可以被转义。例如,参数中每出现一个单引号 [ ' ] 必须代之以两个单引号 [ ' ' ] 来形成一个有效的 SQL 字符串。这只是两种您可以采取的、最常见的用以改进网站安全并避免 SQL 植入的有效方式。您还可以在网上找到许多其他符合您需求的资源(编程语言,具体的 Web 应用程序等 ) 。
下面我们要介绍的是跨站点脚本( XSS )技术 。跨站点脚本是一种通过利用网络应用程序层面的安全漏洞,在网页中植入恶意代码的技术。当网络应用程序处理通过用户输入获得的数据,并且在返回给最终用户前没有任何进一步的检查或验证时,这种攻击就可能发生。您可以在网络应用安全联盟(英文)中找到一些跨站点脚本的例子。
有许多办法可以确保网络应用程序不被这种技术侵犯。一些简便易行的方法包括:
- 剔除可以被插入到表单中的数据输入(例如,PHP中的strip tags功能);
- 利用数据编码,避免潜在恶意字符的直接植入(例如,PHP中的htmlspecialchars功能);
在数据输入和数据库端之间创建一个“层”,以避免应用程序代码被直接植入恶意字符。
一些有关CMSs安全的资源
SQL植入和跨站点脚本只不过是黑客用来攻击和利用无辜网站的多种技术中的其中两种。作为一般的安全准则,在网络安全问题上特别是在使用第三方软件时,一直保持更新以确保您安装了最新版本的软件是非常重要的。许多围绕大型建站社区建设的网络应用程序都提供持续的支持和软件升级。
下面举个例子,开放源码内容管理系统的最大的四个社区——Joomla, WordPress, PHP-Nuke 和 Drupa都在他们的网站上提供关于网络安全方面的知识并且设有大型社区驱动论坛,用户可以提出问题或寻求支持。例如,在Hardening WordPress,WordPress提供了如何加强CMS安全的综合性帮助文件。 Joomla提供了许多有关网络安全的资源,特别是其中的网络安全检查清单,这些操作都是网络管理员应该采用的。
一些识别黑客攻击您网站的方法:
如上所述,黑客可能采用很多不同方式攻击您的网站,也采用多种方法恶意利用无辜的网站。当黑客能够完全控制一个网站时,他们可以把主页彻底更换掉,清除所有的内容(删除您的数据库表),插入恶意软件或Cookie盗取程序。他们还可以利用您的网站制造网络垃圾,比如在您的网站隐藏指向垃圾网页的链接或建立重定向到恶意软件网站的页面。当变化很明显(比如主页被更换)时 ,您可以轻松地辨别出黑客攻击,但对于其他类型的攻击,特别是那些带有制造网络垃圾意图的攻击,就比较不易被人察觉。谷歌提供了一些产品和方法,帮助网站管理员发现自己的网站是否未经许可而被第三方攻击或更改。例如,通过使用谷歌搜索,您可以检查黑客是否将特定的恶意关键词添加到您的网站,并能找出您网站上被攻击的具体网页。打开google.cn/,用[site:domain name]来搜索您的网站,查看黑客是否把一些常用的网络垃圾关键词添加到了您的网站(如伟哥, 色情, MP3, 赌博等) :
[site:example.com 垃圾关键词]
如果您还不熟悉 site: 搜索操作符,这是一个通过将搜索范围限定到特定网站来使用谷歌搜索的途径。例如,搜索site:googleblog.blogspot.com只会返回来自谷歌官方博客的搜索结果。当在这种查询中添加一些垃圾关键词时,谷歌将返回所有该网站中包含这些垃圾关键字的网页,而这些网页都很有可能已经遭受攻击。要检查这些可疑的网页,只需打开谷歌网页快照,您就能发现这些黑客行为。然后,您可以清除这些网页被攻击的部分,并检查服务器配置文件中是否有异常情况(例如Apache网络服务器:htaccess文件和httpd.conf文件)。
如果您的网站已不出现在谷歌的搜索结果中,这可能意味着谷歌已在您的网站上发现由黑客攻击导致的垃圾网页,并很可能因为这些网页违反了我们网站管理员质量指南而已暂时将它们从我们的索引中移除。
为了不断留意是否有可疑关键字在您的网站上出现,您也可以使用谷歌快讯来监测类似的搜索查询:
site: example.com 某色情词汇 或 某赌博词汇 或 "手机铃声"等热门词汇
当这些关键词出现在您网站内容中时,您会收到一封提醒邮件。
您还可以使用谷歌网站管理员工具来检查您网站中的任何黑客行为。网站管理员工具为您的网站提供热门搜索查询的统计信息。这些数据将帮助您监测那些将用户带到您网站的热门搜索查询是否是那些可疑的、无关的垃圾关键词。“Googlebot看到的"的数据也十分有用,在这里您可以观察谷歌是否探查到您网站中任何异常的关键词,无论这些关键词是不是把用户带到您网站的热门关键词。
如果您有网站管理员工具账户,当谷歌认为您的网站已经被黑客入侵时,按被攻击类型的不同,您会收到相应的通知:
- 如果一个恶意的第三方正在使用您的网站制造网络垃圾(如添加隐藏链接或建立垃圾网页),并且已经被谷歌crawler侦测到,您就会在网站管理员工具的“消息中心”中收到一份详细通知(包含受攻击的URL样本,或隐藏链接的锚文本);
- 如果您的网站被第三方利用放置了恶意软件,您会在网站管理员工具账户的“概览”页面中看到恶意软件的警告。
您的网站已经被黑客入侵或被植入了恶意软件?首先,请清理这些由黑客造成的网络垃圾,然后执行下列操作之一:
- 如果您的网站被黑客攻击达到制造垃圾网页的目的,请访问网站管理员工具中的"请求重新审核"链接,申请重新审核和收录;
- 如果您的网站向用户提供恶意软件,请在网站管理员工具的“概览”页面提出重新评估恶意软件的请求。
我们希望这些建议对您有所帮助,也欢迎您分享自己的意见或经验,谢谢!