当您尝试与LinkedIn的Apply Now
按钮集成时,首先需要注册API密钥。表单要求您输入Javascript域API,即Fully-qualified domain name of all pages that will call the JavaScript API with this key.
作为回报,它会为您生成一个API密钥和一些HTML代码,您可以将其复制并粘贴到您的网页上并开始使用。
这是他们的向导生成的代码:
<script src="http://platform.linkedin.com/in.js" type="text/javascript">
api_key: 7a4ghb12agvda4552da
</script>
<script type="IN/Apply"
data-companyname="Asd"
data-jobtitle="Software Developer"
data-joblocation="Istanbul"
data-email="abc@xyz.com">
</script>
现在,如何跟踪此脚本的嵌入位置?我首先输入http://example.com
作为我的Javascript域API。原来我只能在example.com域上使用这个小部件。
in.js
里面有哪些内容告诉LinkedIn它的嵌入位置?
我问的原因是因为我自己也在构建一个小部件,我想确保只有已注册的域可以使用我的小部件。
编辑作为奖励,如果我下载in.js
,删除域检查部分并在我的页面中包含我自己的in.js版本该怎么办?他们如何防止这种情况?
A LinkedIn employee mentions that both client-side and server-side checks are done.但那会是什么样的检查?我正在寻找对这个问题的深入见解。我怎样才能制作这样的小部件?在客户端,如何检查托管.js文件的当前页面?你如何获得托管js文件的域名? 任何帮助赞赏。感谢。
答案 0 :(得分:3)
如果您制作in.js的本地副本,则LinkedIn Javascript框架将无效 - 后端服务器(在。的调用中)检查以确保in.js也来自正确的服务器检查以确保框架仅适用于指定的域。
这个问题在这里被问到/回答: https://developer.linkedin.com/forum/security-prevent-impersonations
答案 1 :(得分:2)
in.js
有一个脚本,可以在DOM中添加另一个脚本标记。它传递API密钥(可能作为脚本URL中的GET参数),然后服务器检查HTTP referer(这是一个标准的HTTP头浏览器发送,指示发送它们的网站获取该页面)并检查它是否与数据库中的API密钥。
更简单的版本将包含以下内容:
document.write('<script src="http://mysite.com/api.js?key="' + api_key + '></' + 'script>');
然后在服务器上,像这样的伪代码:
var expectedDomain = queryTable('apikeys').equal('key', GET('key')).field('domain').run();
if (expectedDomain === parseDomain(http.referer)) {
respond(myscript);
}