我经营一个免费创建数字生成内容的网站。我的访问者也不需要帐户即可开始下载。它的工作非常简单:最终用户填写表单,表单向 PHP 脚本(“API”)发送请求,PHP 脚本返回结果。
?
+---------+ +---------+
| | -----------> | |
|FORM.html| | API.php |
| |<-------------| |
+---------+ +---------+
digital
content
目前,PHP 脚本将向任何使用正确参数调用它的内容发送答案。这使得其他网站很容易窃取我的表单并劫持我的服务。此外,足够熟练的人可以通过 CURL、WGET 或任何自动化脚本请求此“数字内容”。所以,我的问题是:
问:在回答之前,我如何确保请求已从我网站上的表单发送?
到目前为止,我尝试在我的服务器上添加一个额外的 PHP 文件,该文件将在将请求发送到 API 之前“签署”请求 (authenticate.php)。那行得通,但当然,它只是将问题移到了这个新文件中。这个脚本会很高兴和愚蠢地签署所有扔给它的东西并将其传递给 API.php
我也考虑过在表单中添加额外的变量,但这也无济于事。黑客只需要识别和复制这些变量。
我不需要最终的安全性,因为它“只是”一幅画。但是任何检查都比没有好。什么是明智的?
编辑:
我最关心的是使用我的 API 的其他网站。由于内容是免费的,我不太关心访问 API 的机器人或脚本。尽管防止这种情况发生也很好。
牛魔王的故事
Smart猫小萌