我正在构建一个充值系统,用户可以在其中支付一些费用,一些积分将进入他们的电子钱包。但后来我发现如果登录的用户足够聪明,他可以触发ajax并转储任何值。
我该如何防止这种情况发生?因为任何用户都可以打开开发工具并执行发布请求。
最佳答案
您需要先设置 SSL,不要在 URL 中传递参数,并尽可能使用 CSP。 OWAP 网站专门从事这方面的工作,提供了许多关于如何实现您所需的有用指南。
更新
我看来这需要更多解释。您所描述的帽子是 XSS 攻击,很可能属于浏览器中的人或 CSRF(跨站点请求伪造)类别。您可以通过首先确保您的站点使用 SSL 来帮助防止这种情况。 SSL 使用 https 协议(protocol)。该协议(protocol)允许服务器和应用程序在初始握手后设置商定的安全加密。之后发生的所有交易都发生在已建立的安全层上; SSL。顶级浏览器正在插入网络应用程序强制执行此操作,尤其是当您通过网络进行金融交易时。
SSL certificates explained 奥 git _a Google Will Soon Shame All Websites That Are Unsecured
CSP 允许您指定特定的域和来源。 Man-in-the-browser attack
您还可以使用 CORS 设置可接受的 http header 。
这是一个例子:
HTTP/1.1 200 OK
Content-Type:application/json; charset=utf-8
Access-Control-Allow-Headers: Content-Type,Authorization
Access-Control-Allow-Methods: GET,POST,PUT
Access-Control-Allow-Origin: https://www.bobank.com
[
{ id: 456346436, ... }
]
Introducing Content Security policy
.NET 中的 CSP Your API-Centric Web App Is Probably Not Safe Against XSS and CSRF
.NET 中的 CORS Content Security Policy (CSP) for ASP.NET MVC
关于javascript - ajax REST API 安全性防止客户端劫持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945866/