c# - 除了我自己的客户端代码之外,如何防止访问 URL?

标签 c# javascript jquery asp.net-mvc ajax

我正在使用具有大量 jQuery 客户端交互的 ASP.NET MVC。我有一个 jQuery 聊天窗口,它每隔 7 秒定期轮询一次服务器以获取更新。所有这一切都很好,我有两种操作方法来处理聊天的两个主要功能;一种方法用于将消息发布到聊天,另一种方法用于检索更新。

我的问题是一些用户编写了与这些 URL 交互的机器人来发布消息和获取更新。如果想要阻止用户与这些 URL 交互,除非通过我自己的客户端代码,否则应该如何实现?

我想在页面加载时传递一个 GUID,然后在每次请求时传回这个 GUID,但我不确定这是执行此操作的最佳方法。此外,什么会阻止他们在他们的机器人程序中编写一个额外的步骤来对加载页面的 URL 执行正常的 GET 请求,然后解析 GUID 的响应?

最佳答案

好吧,不可能编写以其他人无法模拟的方式运行的代码,...如果您的代码是 Javascript,则可以轻松完成任务。

可以 做的是尝试让它变得更加困难。使用某种身份验证,使用好的混淆器混淆代码等。不过,除非您在整个网站上放置验证码,否则您永远不会 100% 确定。

您还可以使用过滤器、验证等阻止骚扰用户的服务器端。

我反而会尝试攻击使用机器人的原因和好处。要让人们停止使用在您的代码之上运行的机器人和脚本,最简单的方法就是以一种不会打扰您的方式提供他们想要的功能。

关于c# - 除了我自己的客户端代码之外,如何防止访问 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6220451/

相关文章:

javascript - P5js库中如何获取鼠标拖动对象的速度

javascript - 如何遍历 nodeList 功能样式

javascript - 自定义 JQuery 克隆行属性

javascript - 删除 html 字符串中除 <a> 之外的所有标签

c# - 当按我搜索的字段排序时,我可以更快地搜索排序的 List<T> 吗?

c# - 在每天 24 小时运行的应用程序上使用 GC.Collect 是否明智?

c# - 模拟 dbset<T> 其中方法返回 notSupportedException

javascript - 该表格不包括我写的+号

javascript - 使用 jQuery .each() 的递增数字

c# - 未提供所需的模拟级别,或者提供的模拟级别无效