PHP 个变量在 POST 内是安全的
PHP variables safe within a POST
我在我的网站上制作了一个按钮,当点击该按钮时,使用 PHP 从另一个网站调用 API。我必须将我的登录详细信息作为变量放入我的 PHP 中。我见过一些黑客可以通过在地址栏中键入内容来获取 PHP 变量的值的漏洞?不确定那是 XSS 还是 SQL 注入还是什么,但我已经看到它将在哪里以 XML 格式打印出 PHP 代码。
这是一个例子:
if (isset($_POST['submit'])) {
$time = time(true);
$prize = 200;
$ID = "my_secret_API_ID";
$Password = "my_secret_API_Password";
$APIcall = json_decode(file_get_contents("https://apiwebsite/developer/$ID/get_info&pw=$Password"), true);
$display = $APIcall ['some_info'];
echo $display;
}
我的登录信息安全吗?我应该在 $_POST 之外使它们成为全局变量吗?我应该在单独的 PHP 文件中完全定义它们然后使用包含吗?这有什么不同吗?
您实际上从未对从表单收到的数据做任何事情。任何东西都不可能受到攻击。
Isset returns 仅为布尔值,因此不能以公开任何应用程序的方式进行操作。
我觉得其他答案实际上并没有回答你问的问题。 Ohgodwhy 的回答与您的 $_POST
变量有关,并且海报是正确的,如果您不使用它们,那么您就不会受到攻击(除非 PHP 或您使用的其他组件 - 虽然不太可能)。
我认为您的问题与您的这部分代码特别相关?
$ID = "my_secret_API_ID";
$Password = "my_secret_API_Password";
如果您的网站上没有 Local File Inclusion 漏洞(或类似漏洞),这些变量应该是安全的。确保任何其他代码 运行ning 不会读取本地文件并显示它们,否则恶意用户可能会操纵它们来显示您的凭据。考虑将它们存储在加密的数据库中(尽可能将代码和数据分开总是好的)。
echo $display;
如果 https://apiwebsite/developer/$ID/get_info&pw=$Password
曾经 returns 未编码的数据超出您的控制范围,则这段代码可能容易受到攻击。例如如果 API 中有用户数据并且恶意用户在其中放置了一些 <script>
代码,除非您通过 htmlentities. This would be an XSS 漏洞进行编码,否则您的站点将 运行 它。如果您完全信任 apisite
可以正确编码超出他们控制范围的值(并且您完全信任 apisite
本身),那么您现有的代码是可以的。
我在我的网站上制作了一个按钮,当点击该按钮时,使用 PHP 从另一个网站调用 API。我必须将我的登录详细信息作为变量放入我的 PHP 中。我见过一些黑客可以通过在地址栏中键入内容来获取 PHP 变量的值的漏洞?不确定那是 XSS 还是 SQL 注入还是什么,但我已经看到它将在哪里以 XML 格式打印出 PHP 代码。
这是一个例子:
if (isset($_POST['submit'])) {
$time = time(true);
$prize = 200;
$ID = "my_secret_API_ID";
$Password = "my_secret_API_Password";
$APIcall = json_decode(file_get_contents("https://apiwebsite/developer/$ID/get_info&pw=$Password"), true);
$display = $APIcall ['some_info'];
echo $display;
}
我的登录信息安全吗?我应该在 $_POST 之外使它们成为全局变量吗?我应该在单独的 PHP 文件中完全定义它们然后使用包含吗?这有什么不同吗?
您实际上从未对从表单收到的数据做任何事情。任何东西都不可能受到攻击。
Isset returns 仅为布尔值,因此不能以公开任何应用程序的方式进行操作。
我觉得其他答案实际上并没有回答你问的问题。 Ohgodwhy 的回答与您的 $_POST
变量有关,并且海报是正确的,如果您不使用它们,那么您就不会受到攻击(除非 PHP 或您使用的其他组件 - 虽然不太可能)。
我认为您的问题与您的这部分代码特别相关?
$ID = "my_secret_API_ID";
$Password = "my_secret_API_Password";
如果您的网站上没有 Local File Inclusion 漏洞(或类似漏洞),这些变量应该是安全的。确保任何其他代码 运行ning 不会读取本地文件并显示它们,否则恶意用户可能会操纵它们来显示您的凭据。考虑将它们存储在加密的数据库中(尽可能将代码和数据分开总是好的)。
echo $display;
如果 https://apiwebsite/developer/$ID/get_info&pw=$Password
曾经 returns 未编码的数据超出您的控制范围,则这段代码可能容易受到攻击。例如如果 API 中有用户数据并且恶意用户在其中放置了一些 <script>
代码,除非您通过 htmlentities. This would be an XSS 漏洞进行编码,否则您的站点将 运行 它。如果您完全信任 apisite
可以正确编码超出他们控制范围的值(并且您完全信任 apisite
本身),那么您现有的代码是可以的。