我目前正在使用Twilio进行短信电子邮件集成。
Twilio提供的代码需要存在于公共URL上才能使集成工作。没有理由让任何人需要访问此网址。
不幸的是,生成在公共网址上的代码意味着随机网络抓取工具可以并且确实将网页加载到其所在的位置,这会触发要发送的空白电子邮件。至少我认为这是做什么的?
我不能使用if ... else来查看是否有任何字段为空,因为集成发送样板标签,例如" body"和"消息"自动(因此,字段永远不会显示为空)。
所以,我想知道我的文件结构中是否有某个地方我可以隐藏这个PHP,以便集成可以工作,但没有随机ping到URL会触发电子邮件。
编辑:这个php目前作为我的index.php文件存在于/ usr / share / nginx / html文件夹中。我没有超级经验,我花了很多时间尝试找到一个地方把它放到实际成功运行的地方......
答案 0 :(得分:1)
Twilio开发者传道者在这里。
你有几个选择。
你可以add HTTP basic authentication to your server。然后,更改Twilio号码的webhook URL以在URL中包含用户名和密码。像:
https://username:password@example.com/index.php
或者,在您的代码中,您可以使用X-Twilio-Signature
标题validate that the request came from Twilio。这看起来有点像这样:
<?php
// NOTE: This example uses the next generation Twilio helper library - for more
require_once '/path/to/vendor/autoload.php';
use Twilio\Security\RequestValidator;
// Your auth token from twilio.com/console
$token = "YOUR_AUTH_TOKEN";
$signature = $_SERVER["HTTP_X_TWILIO_SIGNATURE"];
$validator = new RequestValidator($token);
$url = $_SERVER['SCRIPT_URI'];
$postVars = $_POST
if ($validator->validate($signature, $url, $postVars)) {
// This is from Twilio!
// The rest of your code to send the email goes here.
} else {
// This is not from Twilio. Return a 403 response
header('HTTP/1.1 403 Forbidden');
exit;
}
您可以阅读有关securing your webhook endpoints in the Twilio documentation的更多信息。
答案 1 :(得分:0)
如果可能,您应该将文件存储在webroot之外。
...否则
将.htaccess用于deny from all