保护服务器的ajax GET / POST请求
假设我使用某种API并且我的文件server.php处理与API服务的连接。 在我的客户端,我使用这样的AJAX调用:
$http({ url : 'server/server.php', method : 'GET', data : { getContent : true } });
在我的server.php中,我这样处理:
if(isset($_GET['getContent'])){ $content = get_content(); } function get_content(){...}
我只是想知道是什么阻止任何人使用相同的getContent参数发送AJAX调用并获取我的所有数据? 我如何保护它并确保只有来自我的应用程序的调用才能获得相关数据?
谢谢!
我想你担心CSRF攻击。 在此处阅读更多相关信息: https : //www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet
保护您的请求最常用的选项之一是: – 生成令牌并将其与会话请求一起发送。 您的WebServer可以将此标记标识为源自特定会话的特定客户端
我只是想知道是什么阻止任何人使用相同的getContent参数发送AJAX调用并获取我的所有数据?
没有。 此URL是公开的,因此任何人都可以向它发出请求。
我如何保护它并确保只有来自我的应用程序的调用才能获得相关数据?
您可以传递在服务器端validation的其他数据(例如,某些散列值)。
$http({ url : 'server/server.php', method : 'GET', data : { getContent : true, hash : '0800fc577294c34e0b28ad2839435945' } });
和
if(isset($_GET['getContent'])) { if(isset($_GET['hash']) && validateHash($_GET['hash'])) { $content = get_content(); } } function get_content(){...}
我只是想知道是什么阻止任何人使用相同的getContent参数发送AJAX调用并获取我的所有数据?
与保护任何其他请求中的数据的方式相同(例如,使用用户身份validation)。 就服务器而言,关于HTTP,Ajax并没有什么特别之处。
我如何保护它并确保只有来自我的应用程序的调用才能获得相关数据?
你不能。 用户可以随时检查浏览器询问服务器的内容并进行复制。
通常,人们validation用户而不是应用程序。