我目前正在制作一个开源浏览器扩展程序,它将向我的站点发送请求。这可以使用 Ajax 轻松完成,请求将发送到页面 action.php
。
我的站点将使用 PHP,那么现在的问题是,我如何确保 action.php
接收到来自原始扩展的请求?我的意思是恶意攻击者可以很容易地向服务器发送虚假信息,或者可以使用 fork 发送不正确的数据。我想生成某种 token ,但我想任何人都可以重新创建它。
我怎样才能避免这种情况?
最佳答案
我自己对此有一些经验。我一直在构建一个带有登录名的扩展程序,最终不可避免地发现扩展程序的安全性本来就很困难。
问题是扩展只是一堆 JS 和 HTML,任何人都可以检查其值。这意味着任何决心深入挖掘您的代码的人都可能找到绕过您内置的任何内容的方法。
我最终得出的解决方案是,扩展本身不能保存任何持久的 secret 。具有超时的 session 是唯一可以安全存储的东西。我的扩展程序的实际登录是通过网站通过 HTTPS 完成的。
如果您尝试在没有任何此类登录的情况下执行此操作,您唯一的办法是通过使用可以生成服务器可验证 token 的算法来尽可能难以确定需要发送的内容,然后仅发布缩小代码到网上商店。
编辑:重新阅读问题并注意到您说您正在做这个开源。如果没有通过 HTTPS 在网络服务器上进行某种身份验证,您几乎无法阻止那些决定绕过您的保护的人,因为它们将显示在您的公共(public)存储库中。
关于javascript - 如何确保请求是从原始软件发送的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42141520/