【问题标题】:How do I prevent cheating when user clicks a button用户点击按钮时如何防止作弊
【发布时间】:2019-06-20 03:07:47
【问题描述】:

所以我想开发一个小型点击游戏来弄湿我的脚,它还可以回答我关于作弊的问题。

这就是概念,有一个空白页,上面有 Button<h1/> 将会有一个注册过程,用户将被放入一个带有Score 列以及用户名和密码等的数据库中。

当用户单击Button 时,我想向该用户添加一个点,然后将其放入数据库的Score 列中,以便保存分数并显示在@987654326 的页面上@标签

现在,如果我通过 JavaScript 执行此操作,通过客户端访问数据库并从客户端添加积分,那感觉就像我只会邀请作弊者和许多安全问题。

所以我的问题是。 我如何通过创建一个按钮然后将其与我的 Controller 中的函数挂钩来防止作弊者,这样我就可以在服务器端处理它。

<body>
    <h1>Playground</h1>

    <h1>Points @Model.Coins</h1>

    <h1 id="Points">0</h1>

    <button id="PointsButton">Points!</button>

    <script src="~/js/PointSystem.js"></script>
</body>

JS

let i = 1;
let button = document.getElementById("PointsButton");
let DisplayPoints = document.getElementById("Points").innerHTML;
DisplayPoints = i;

button.onclick = AddPoints;

function AddPoints() {

}

【问题讨论】:

  • 听起来您正在寻找的技术是“AJAX”。查找在 ASP.NET 中使用 AJAX 的示例和教程(MVC、Core、服务器端技术的任何其他细节)。
  • 您作为客户端代码公开的任何内容都容易受到黑客攻击(HTML、CSS、JavaScript)。为了保护您的数据库,您需要服务器端检查(.php、.aspx、.jsp)。
  • 我会研究 AJAX。
  • window.setInterval(()=&gt;button.click(),1000) 要停止编写脚本??
  • @MarkDenom:他的观点是,用户可以设置该间隔并自动以他们想要的速度快速点击按钮。没有什么可以阻止他们。关键是在这里对“作弊”保持现实。如果您可以定义验证逻辑,服务器端验证肯定会有所帮助。但是如果游戏变得流行并且人们要作弊,希望服务器已经准备好处理很多的请求。

标签: javascript html asp.net model-view-controller asp.net-core


【解决方案1】:

首先,您应该重新考虑是否需要阻止作弊者,其次,您发送给客户的任何内容最终都可以被黑客入侵。

听起来您需要服务器提供一些东西来验证交易是否合法。如何半安全地做到这一点对于这个网站来说确实是一个广泛的问题,

如果您在必要之前忽略安全问题,您可以通过 XMLHttpRequest 或在较新的浏览器上获取来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-11
    • 2020-09-09
    • 2018-07-08
    • 2021-10-10
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多