在何处隐藏PHP以防止触发电子邮件
我目前正在使用Twilio进行短信到电子邮件的集成 Twilio提供的代码需要存在于公共URL上,以便集成工作。没有理由任何人需要访问此URL 不幸的是,存在于公共URL上的代码意味着随机网络爬虫可以并且确实加载它所在的页面,从而触发发送空白电子邮件。至少我认为这就是为什么 我不能使用if…else来查看是否有任何字段是空的,因为集成会自动发送“body”和“message”之类的样板标签(因此,字段永远不会看起来是空的) 所以,我想知道在我的文件结构中是否有某个地方可以隐藏这个PHP,这样集成就可以工作了,但是对URL的随机ping不会触发电子邮件在何处隐藏PHP以防止触发电子邮件,php,email,twilio,integration,Php,Email,Twilio,Integration,我目前正在使用Twilio进行短信到电子邮件的集成 Twilio提供的代码需要存在于公共URL上,以便集成工作。没有理由任何人需要访问此URL 不幸的是,存在于公共URL上的代码意味着随机网络爬虫可以并且确实加载它所在的页面,从而触发发送空白电子邮件。至少我认为这就是为什么 我不能使用if…else来查看是否有任何字段是空的,因为集成会自动发送“body”和“message”之类的样板标签(因此,字段永远不会看起来是空的) 所以,我想知道在我的文件结构中是否有某个地方可以隐藏这个PHP,这样集成
编辑:该php当前作为我的index.php文件存在于/usr/share/nginx/html文件夹中。我不是很有经验,我花了很多时间才找到一个地方把它放在它真正成功运行的地方…如果可能的话,你应该将文件存储在webroot之外 否则
使用.htaccess来拒绝所有Twilio开发者的传道者 你有几个选择 你可以。然后,更改Twilio号码的webhook URL,以在URL中包含用户名和密码。比如:
https://username:password@example.com/index.php
或者,您可以在代码中使用X-Twilio-Signature
标题。这看起来有点像这样:
<?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;
}
如果您将名称index.php
更改为类似于7eead553-5a1d-4797-9234-a7eda26369bb.php
-这样行吗?使用robots.txt?感谢您的建议。重命名它会破坏集成(不确定原因)。我添加了一个robots.txt文件,但我想我必须看看在接下来的24小时内是否有效。显然,当我手动重新加载页面时,仍然会触发电子邮件。据我所知,要通过公共URL访问php,它需要存在于webroot中,这可能解释了为什么当我将其置于webroot之外时,它无法真正工作。你能详细说明我如何使用.htaccess吗?看起来我需要一个特定的IP来允许,我想我需要从Twilio那里获得这个IP?参见philnash的答案