我确定之前已经问过这个问题,但我找不到以对我有意义的方式解释它的帖子。
我正在创建一个用Javascript编写的bookmarklet /浏览器插件。此脚本调用api,有效地将用户活动信息从一个站点发送到另一个站点。 (想想,当用户发布Facebook状态时发推文)
此网站将JavaScript加载到网站中。我正在使用的API需要使用API密码生成MD5哈希。这没问题,我正在对我在其他地方托管的PHP脚本进行ajax调用,返回正确的字符串。
问题是我不希望用户能够调用这个相同的脚本来生成他们自己的字符串,嵌入的秘密会滥用API。他们是一种我只能在我想制作它时允许调用此API的方法吗?
或者我可能是从错误的方向接近这个。
答案 0 :(得分:3)
您无法决定客户端如何执行您的JavaScript。无法创建“安全”请求,或确保攻击者未对其进行修改。这是客户端/服务器系统的本质。可以使用GreaseMonkey修改其自身页面,并且可以使用TamperData修改或重播任何请求。
答案 1 :(得分:0)
1)你应该像你的GUID一样在你的数据库上打开一个令牌。
这个guid将代表一些信息并且只能执行一次(将一个db字段放在名为“isAlreadyuse”-type bit的表中)。
现在,
当ajax调用自身时 - 你将这个guid发送到服务器。
服务器将查看guid是否存在
并发出其逻辑并将该字段更新为“1”。