摘要: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服務器的安全性、開發工具的安全性等,這些也是開發和維護人員必須注意的。
作者簡介:
黃鴻華,福建交通職業技術學院信息工程系講師。