我對網絡開發相當陌生,最近終於設法使用JavaScript編寫簡單的在線遊戲。我用來管理高分系統的原始方法是在提交到php腳本(即javascript> HTML(表單)> PHP> DB)之前將一系列javascript變量傳遞到HTML表單中:Javascript遊戲黑客預防
Javascript:
var score = 345345; //score after playing game
document.theform.score.value = score;
document.theform.submit();
HTML:
<form name="theform" action="scorehandler.php" method="post">
<input name="score" type="hidden" value="">
</form>
使用此方法但是可以讓用戶輕鬆地通過重新創建表單並提交自己的本事。
我得到的是通常的做法,以防止用戶從黑客可能是做盡可能多的編碼在服務器端儘可能(即使用PHP來替換儘可能多的代碼儘可能的),但它似乎它可能會對遊戲造成一些潛在的問題(例如,php的同步性)
有沒有辦法以某種方式隱藏客戶端的html表單(以及相關的javascript vars)而不必重新編碼php中的所有內容?還是有一些其他的標準解決方法呢?
任何幫助,非常感謝!
的JavaScript/HTML需要可以看出通過瀏覽器進行渲染和訪問,因此沒有確保這些的方法。你可以通過模糊處理來尋求安全性,但這通常不太適用。 –
沒有辦法保護html和js,因爲它在客戶端呈現,但爲了防止惡意表單提交,您可以使用CSRF令牌,並且還有很多其他方法可以防止惡意輸入。 –
相關閱讀:http://stackoverflow.com/questions/3531968/why-is-client-side-validation-a-security-risk-as-opposed-to-server-side-validati http://stackoverflow.com/questions/13942498/should-you-validate-server-side-if-youre-validating-client-side - 尤其是第二個。 「絕對不要相信任何來自瀏覽器的內容。」用戶可以完全控制瀏覽器。他們可以欺騙任何東西。 – Sumurai8