javascript - 如何限制对我的网络服务的访问?

标签 javascript web-services security

我有 http://example.com/index.html,它在 HTML 中使用 JavaScript (XmlHttpRequest) 在 http://example.com 调用 Web 服务/json/?a=...&b=...

Web 服务向 index.html 返回一个 JSON 信息数组,然后显示在 index.html 上。

因为任何人都可以查看 index.html 的源代码并查看我如何调用 JSON 网络服务 (http://example.com/json/ ), 如何防止人们直接调用我的 JSON 网络服务?

由于 Web 服务本质上是对我的数据库的开放读取,我不希望人们滥用 Web 服务并开始直接从 Web 服务获取数据,启动 DoS 我的服务器,获取更多的信息,等等。

更新:

有没有办法限制对http://example.com/json/的请求只来自同一服务器(IP)和http://example的URL请求.com/index.html?

意思是,http://example.com/json/ 无法检测到请求者是 ($_SERVER['REQUEST_URI'] == http://example.com/index.html) 并且只允许这样做?

最佳答案

没有简单的方法来防止这种情况。如果您的服务不是很受欢迎,因此很可能成为拒绝服务攻击的目标,我也不会费心。

我想到的一件事是使用一次性 token (对 10 或 100 个请求有效)。

其他(天真的)方法是检查请求中是否存在 X-Requested-With header ,但当然这很容易被伪造。因此,我的建议是:除非问题是真实的,否则什么都不做

还有一个想法:hash calc .这个想法是要求客户端对每个请求执行相当昂贵的计算,而在服务器端验证计算很便宜。对于单个请求,开销非常小,但是对于 1000 个请求,它可能会占用大量 CPU 时间。我不知道 hashcalc 是否已被用于防止 DoS'ing 网络服务。几年前,它被提议作为反垃圾邮件措施,但从未流行起来。

关于javascript - 如何限制对我的网络服务的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578645/

相关文章:

javascript - html2canvas 屏幕截图一直显示为空白

c# - HTTP 状态 407 : Proxy authentication required Error when calling web service

javascript - ng-disabled 无法正常工作 5

javascript - 如何询问 Meteor 为旧的 Nodejs 构建代码

javascript - 从 Directive AngularJS 调用 Controller 函数

java - 通过POST访问URL时获取 "Transport error: 401 Error: Unauthorized"

web-services - 禁用自动生成的 JAX-WS 状态页面

javascript - 不涉及服务器的 XSS - 这危险吗?

security - TrackJS 和 GDPR 以及 SPA

ios - 应用传输安全 (ATS) 和本地已安全连接