JS漏洞的程度
Degrees of JS vulnerability
永远不要信任客户端。这是我的编码口头禅。只要付出足够的努力,所有javascript都可以被覆盖或破坏。我想了解的是如何。
比方说,我为一个游戏编写了一个函数checkStep()
——每次玩家移动一个空格,它就会轮询服务器,以检查是否有任何事件:生命值再生、进入随机战斗、移动到下一个地图等。我问自己"我自己,我该如何重写或禁用这个函数?"研究发现了一些相互矛盾的结果。一些消息人士表示,可以从控制台直接重新定义函数,另一些消息人士则表示,这将是一个更复杂的过程。
我的问题是:玩家需要做什么才能重写或禁用我的checkStep()
功能?他们能简单地从控制台重新定义它吗?他们必须撕毁、修改和重新托管我的代码吗?你会怎么做?
请注意,我是而不是询问如何确保此功能的安全。第一个留下"你可以尝试缩小它,但它仍然不安全"或"放入一些服务器端检查"正在被分号攻击
您可以使用像Fiddler这样的web调试代理为本地机器执行此操作。像这样的程序可以让你拦截下载的内容并对其进行篡改。因此,你可以编写一个新版本的函数,然后在从服务器下载文件时使用该程序将其替换为你的版本。然后,对于您的本地机器,代码将在新函数就位的情况下运行。Fiddler网站上的网络会话操作页面有一些详细信息。
甚至没有理由使用任何Javascript或浏览器。
如果一个普通用户可以使用浏览器玩游戏,那么任何用户都可以使用任何程序与服务器通信,并向服务器发送他们想要的任何内容。服务器无法知道是否有人正在使用浏览器连接到它。
这适用于任何事情。游戏服务器不知道用户是否通过官方游戏客户端连接到它。由于官方游戏是封闭源代码的,即使可以对所使用的协议进行逆向工程,并使用任何东西连接到服务器,也很容易陷入信任。
复杂的事情,如创建恶意游戏客户端,或在内容进入浏览器之前使用代理更改内容,在技术上都是有效的,但这似乎是一件非常简单的事情。
var checkStep = function() {
... // your original function
}
// later on
checkStep = function() {
alert('foo');
}
在JavaScript中,更改变量的函数是完全有效的。您定义的任何函数都可以在客户端重新定义。这可以通过浏览器加载的使用冲突变量名的其他脚本文件、通过XSS注入的脚本或用户打开控制台来完成。
- 如何防止在使用.val()时引入XSS漏洞
- 一个定时器事件会在多大程度上减慢我在JavaScript中的代码
- 使用像素操作修改画布在某种程度上不会;我不能完全在IE9中工作
- TypeError:熟练程度不是一个函数,但它确实是
- 谷歌地图漏洞?显示的标记会根据缩放级别而更改
- 修补Rails 3以修复CSRF保护漏洞
- AngularJS JSON漏洞保护是如何工作的
- 弧钟每分钟都会将自己重置到错误的程度
- 如果使用JSONP来解决同源策略,则可以'它不能用于XSS漏洞利用
- 创建nonce并将其输出为数据属性是否存在漏洞
- 如果JavaScript标签是通过谷歌标签管理器插入到页面上的,那么它们的延迟程度是多少;s的自定义HTML
- JS漏洞的程度
- 在客户端(使用 JavaScript/JQuery)应该在多大程度上防止快速表单提交
- Java 中的跨站点脚本漏洞
- 我们可以在多大程度上依赖 JavaScript
- 未阻止跨域 AJAX 请求:这是安全漏洞吗?
- 如何更改鼠标移动时的渐变程度
- 哈希安全漏洞 - 如何修复
- 邮件到:支持的程度如何
- XSS 攻击漏洞 - 使用 JavaScript 或 jQuery 调整查询