栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过AJAX获取在您的服务器上调用PHP文件的域

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过AJAX获取在您的服务器上调用PHP文件的域

“我认为引用者将是metromapper.org,因为该域在加载后会调用yourmapper.com脚本”

实际上那是不正确的。首先,您永远不要依赖HTTP_REFERER,因为它是大多数(并非所有)浏览器传递的自愿参数,并且很容易被欺骗。如果愿意,我可以使用CURL发送您的网站请求,以使引荐来源网址为whitehouse.gov。那里没有安全措施。

话虽如此。浏览器将该参数设置为将用户引至当前加载页面的页面。不是脚本。因此,看到您看到的结果的原因是,通过stackoverflow.com上的链接将用户引向了metromapper.org。

最后,让我们进入多汁的部分。您正在使用JS在浏览器中编写代码。很好,绝对没有问题。但是您必须记住JS是开源的。因此,人们可以(并且将)仅仅因为他们可以而弄乱您的代码来使用您的API。话虽如此。最好的选择是在JS
API中将网站的网址和请求一起传递。这是“跟踪”正在使用脚本的站点的最佳方法。您可以检查服务器端以确保传递了URL。这样可以防止人们修改您的API来删除将其URL发送到您的服务器的位。但是,它不会阻止他们将其修改为使用其他人的网址或随机未注册的网址作为参数。

确保您可以构建一个在其服务器上运行的PHP API。JS API连接到PHP API,并且PHP API是zend-
guard编码的(或其他一些源代码保护代码系统),但是仍然会有人对该文件进行解码以返回到您的源并与您混淆。当然,能够这样做的人要少得多,而普通用户宁愿照原样使用您的API。然后,还有一个问题,就是人们无法在没有能力运行编码的PHP文件的服务器上运行API。

最后,您必须确定所需的安全性和身份验证级别,但是由于您的API在客户端浏览器中的Javascript中运行,因此除了模糊处理外,几乎没有其他可用的方法。

我想说,最好的选择是让您的JS代码紧抓当前页面的URL,然后将其与API请求一起发送。从那里,您的服务器可以处理URL以获取根域和您要存储的任何其他信息。

如果要防止人们“欺骗”对其他用户的网站URL的请求,则可以实现一个PHP
API,该API可以在特定位置安装在用户的服务器上。例如http://www.domain.com/my-app-
name.php

所有JS
API调用都应通过该脚本。用户下载您的API时,他们应该输入其网站URL和其他信息。您的系统会生成一个“密钥”,并将其注入脚本中,然后再打包以供他们下载。该密钥在其域内有效,并用于使用河豚或另一种2向加密算法对与API之间的所有传输进行编码。这样,当您的API收到来自其PHP
API文件的请求时,您将获得发出请求的页面的URL,并用只有您和该站点的管理员拥有的密钥进行编码。因此,请求是这样发送的:metromapper.org/api?site=[url_enpred_pa​​ge_address]&req=[encrypted_request]

您的服务器使用页面URL来确定应使用什么密钥来解密数据。然后,它解密数据。如果数据已损坏或没有解密为您期望的数据,则这是无效请求,您应该退出而不返回任何内容。

我建议使用PHP文件进行加密,而不是将加密写入JS,这是因为您不想给客户端(每个站点访问者)带来加密/解密的负担,PHP会更快地处理它。比JS还要多,因为有一些库可以为您处理这些任务。

无论如何,应该使您正确地跟踪和验证针对您API的不同站点的请求。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号