摘要:web游戏作为现今网络游戏的一个重要形式,其安全性受到越来越多的关注。对web游戏的攻击越来越多。全文首先对web游戏进行了简要概述,然后就从web在线游戏存在的SQL注入、跨站脚本攻击、用户账户信息的安全以及用户越权操作四个方面来论述web游戏开发过程的安全性问题,提出了参数化查询、过滤标签,编码输出HTML、使用哈希加密体系、在服务器端验证用户提交的数据等安全性解决方案。
关键词:web游戏;sql注入;跨站脚本攻击;加密体系;越权操作
一、web游戏概述
Web游戏也称作网页游戏,是使用Web浏览器就可参与到其中的在线游戏。它不用安装游戏客户端也能实现多人同时在线参与游戏。依托WEB技术的发展,网页游戏受到越来越多办公室白领的追捧,网页游戏已成为网络游戏的一个分支。在一些综合的游戏门户网站也开始把网页游戏作为网络游戏产品的一个重要部分进行大规模的发展。
二、web游戏开发安全性问题分析
随着web在线游戏用户的不断增多,web游戏种类越来越多样,网络上对web游戏运行的攻击也呈现出多样性和复杂性。因此在web游戏开发过程中,除了游戏的功能性和趣味性,开发工程师必须考虑web在线游戏的安全性问题。只有充分考虑了系统的安全性问题,才能让系统安全稳定的运行。本文就从web在线游戏存在的SQL注入、跨站脚本攻击、用户账户信息的安全以及用户越权操作四个方面来论述web游戏开发过程的安全性问题以及解决方案。
(一)处理SQL的注入问题。
SQL注入可分为五大类,分别是:数字型注入,字符型注入,搜索型注入(like),in型的注入,语句连接型注入。当前处理SQL的注入主要有两种方式。第一种就是用拼接的方式生成SQL语句。这种方式就是要处理从客户端提交的数据,防止客户端提交的数据生成满足SQL注入条件的SQL查询语句,以防止他人通过SQL注入达到破坏系统的目的。用拼接的方式生成SQL语句主要是要处理SQL的关链字以及单引号等相关敏感的字符。虽然这种方式对于编写代码来说相对的简单。但是这种方式不仅会引起用户使用的不便,还不能保证不发生SQL的注入式攻击。第二种方式是参数化查询,此种方式能够完全防止SQL注入式攻击,不必处理用户提交的数据中的敏感的字符,不会影响用户使用。参数化查询还能带来一个好处就是,参数化能够通过SQL Server作预编译处理,能够把SQL语句给缓存起来,这样就可以提高SQL的执行效率。某些地方不能过滤如 ORDER BY + 变量,还有SQL中IN的查询操作是无法进行参数化查询,所以这些地方我们要进行数据验证,比如对于ORDER BY的方式,我们可以用一个数组来验证传入的参数,如果参数不在验证数组中,就不进行排序操作。对于IN的查询操作主要根据实现的情况,用正则表达式进行数据的验证,以保证系统的安全性。
(二)防止跨站脚本攻击
跨站脚本攻击(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料,利用网站用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。有效防止跨站脚本攻击,是WEB程序是否安全的一个重要标准。对于这个问题,主要采用的方式是编码输出。当然对于必须支持HTML代码的地方,不能采用这种方式。对于必须支持HTML代码的功能,我们可以建立自己的XSS攻击库,方便测试和收集新的攻击方式。我们可以编写功能函数过滤IFRAME、SCRIPT、OBJECT、BASE等标签,还有Style中的EXPRESSION、BEHAVIOUR、SCRIPT等。
(三)完善加密体系
一个完善的加密体系,有利于确保密码的安全性和信息的完整性。对于用户的密码,系统可以采用了MD5哈希加密来保存用户密码。并在用户注册时检测密码强度,不允许使用强度太低的密码。可以要求用户使用8位以上复杂密码,即用户密码中应包含大小写字母、数字和感叹号、括号等特殊字符,这样可以防止暴力破解,我们还要定期提示用户密码要及时更新。对于写到客户端的COOKIE,也可以采用MD5哈希加密的方式,作为对原始数据的验证。如此一来,写到COOKIE中的就是两个数据,一个是原始数据,一个是MD5哈希加密的验证字符串,这样在服务端读取COOKIE时,可以进行验证,防止用户使用其它方式修改COOKIE,破坏系统的安全。
(四)防止越权操作
越权操作是指对系统进行超越自己权限的操作。每个游戏用户都必须先注册自己的用户账户,系统给用户设置自己特定信息的权限,如果操作越出了自己权限范围,就是越权操作。对于涉及到用户和管理员的操作,首先必须检查操作的合法性。对于合法的操作,还需要检查操作的数据是否是属于操作者本人。特别对用户的自身操作,如修改个人信息等操作,要检查数据是否属于操作者本人。是否有权限执行操作。操作时对身份的验证要引用系统服务端的数据,不要用用户可修改的客户端数据进行验证。如果一定要引用客户端的数据,那么要通过哈希加密等方式,保证用户提交的数据是无法修改的,在提交时一定要在服务端进行验证,如果用户的数据验证无效,就中断程序的运行,提示用户不要提交非法的数据。
三、小结
本文列出了确保web游戏运行过程安全稳定的几个原则和方法,包括总是使用复杂不易被猜测到的密码、坚持“最低权限”原则,决不授予并非绝对必需的权限,验证所有用户输入的数据以及使用参数化的存储过程,而不是在数据库上生成动态查询。当然,除此之外,web游戏运行的安全性还跟其它方面相关,例如web服务器的安全性、开发工具的安全性等,这些也是开发和维护人员必须注意的。
作者简介:
黄鸿华,福建交通职业技术学院信息工程系讲师。