通过AJAX获取在服务器上调用PHP文件的域
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过AJAX获取在服务器上调用PHP文件的域,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3138字,纯文字阅读大概需要5分钟。
内容图文
![通过AJAX获取在服务器上调用PHP文件的域](/upload/InfoBanner/zyjiaocheng/791/1ad13fe70d11492b9ff5b19fd5528877.jpg)
我正在构建一个API,并且有一个关于如何跟踪/知道哪些域使用该调用的问题.
API调用是用PHP构建的,不需要任何身份验证.用户很可能在其服务器上的AJAX调用中使用API??.
例如,我提供API PHP文件的域称为dev.yourmapper.com.域名www.metromapper.org上的某人构建了一个创建Go??ogle地图的页面,并使用Ajax调用我的文件将我的数据叠加到他们的地图上.
以下是该示例:http://www.metromapper.org/example/apitest.htm
(单击中心地图标记以查看yourmapper.com脚本可用的所有PHP服务器变量的弹出窗口.)
请注意,如果单击链接,HTTP_REFERER可能会变为’stackoverflow.com'(如果您剪切并粘贴链接,则为空).我认为引用者将是metromapper.org,因为该域在加载后调用了yourmapper.com脚本,但显然不是.
结论:我可以使用什么方法来确定哪个域使用Javascript调用mymapper.com脚本?如果需要,我可以使用PHP以外的其他语言.谢谢.
解决方法:
“我认为引用者将是metromapper.org,因为该域在加载后调用了yourmapper.com脚本”
这实际上是不正确的.首先,你不应该依赖HTTP_REFERER,因为它是大多数(不是所有)浏览器传递的自愿参数,并且很容易被欺骗.我可以使用CURL发送您的网站请求,如果我愿意,看起来像推荐人是whitehouse.gov.那里没有安全措施.
话虽如此.浏览器将该参数设置为将用户引用到当前加载页面的页面.不是脚本.所以你看到你看到的结果的原因是因为用户通过stackoverflow.com上的链接被引用到metromapper.org
最后,让我们来看看多汁的部分.您正在使用JS在浏览器中编写代码.那没关系,这绝对没有问题.但你必须记住JS是开源的.因此,人们可以(并且将会)将您的代码与您的API一起使用,因为他们可以.话虽如此.你最好的选择可能是在你的JS api中传递网站的url和请求.这是“跟踪”网站使用您的脚本的最佳方式.您可以检查服务器端以确保传递了URL.这会阻止人们修改您的API以删除将其URL发送到您的服务器的位.但是,它不会阻止他们修改它以使用其他人的url或随机未注册的URL作为参数.
当然,您可以构建一个在其服务器上运行的PHP API. JS API连接到PHP API,PHP API是zend-guard编码的(或其他一些源代码保护代码系统)但是仍然会有人解码文件以回到你的源代码并弄乱你.当然,人们能够做到这一点的人数要少得多,而普通用户更愿意使用你的API.然后,您还遇到了无法在无法运行编码的PHP文件的服务器上运行API的问题.
最后,您必须确定所需的安全性和身份验证级别,但由于您的API在客户端浏览器中使用JavaScript运行,因此除了混淆之外几乎没有.
我想说你最好的选择就是让你的JS代码抓住当前页面的URL并通过API请求发送它.从那里,您的服务器可以处理URL以获取根域和您要存储的任何其他信息.
如果您想阻止人们“欺骗”对其他用户的网站网址的请求,您可以实现在某个地方安装在用户服务器上的PHP API.例如http://www.domain.com/my-app-name.php
所有JS API调用都应该通过该脚本.当用户下载您的API时,他们应该输入他们的网站URL和其他一些信息.您的系统会生成一个“密钥”并将其注入脚本,然后再打包以供下载.该密钥对其域有效,并用于使用说blowfish或其他双向加密算法对进出API的所有传输进行编码.这样,当您的API从其PHP API文件收到请求时,您将获得请求所依据的页面的URL,并使用仅由您和该站点的管理员拥有的密钥进行编码.所以请求是这样的:metromapper.org/api?site=[url_encoded_pa??ge_address]\u0026amp;req=[encrypted_request]
您的服务器使用页面URL来确定应使用哪个密钥来解密数据.然后它解密数据.如果数据已损坏或未解密到您期望的内容,那么这是一个无效的请求,您应该退出任何内容.
我建议使用PHP文件进行加密而不是将加密写入JS的原因是因为您不希望给客户端(每个站点访问者)带来加密/解密负担,并且PHP将更快地处理它因为有些库可以帮你处理这些任务.
无论如何,这将使您能够跟踪并验证针对您的API的不同站点的请求.
内容总结
以上是互联网集市为您收集整理的通过AJAX获取在服务器上调用PHP文件的域全部内容,希望文章能够帮你解决通过AJAX获取在服务器上调用PHP文件的域所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。