检查推荐人?

发布于 2024-10-06 18:06:11 字数 341 浏览 2 评论 0原文

我遇到问题了。我有这样的代码:

$theUrl = $_GET["url"];
include("$theUrl.php");

这获取了 url,例如: http://mywebsite.com/index.php?url=test

但是如果有人输入:

http://mywebsite.com/index.php?url=http://theirwebsite.com/someEvilscript

如何避免这种情况呢?我只希望执行服务器上的脚本,而不是来自其他网站的脚本。感谢您的帮助。

I am having a problem. I have this code:

$theUrl = $_GET["url"];
include("$theUrl.php");

This gets the url, for example: http://mywebsite.com/index.php?url=test

But what if someone puts in:

http://mywebsite.com/index.php?url=http://theirwebsite.com/someEvilscript

How to avoid this? I want only scripts that i have on my server to be executed and not from other websites. Thanks for help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽手叙旧 2024-10-13 18:06:11

处理此问题的好方法之一是定义可包含的文件白名单。如果有任何东西不在该列表中,则应将其视为邪恶的并且永远不要包括在内。

例如:

<?php
$allowed = array('file1', 'file2', 'file3');

if (in_array($_GET["url"], $allowed)) {
    // You can include
} else {
   // Error message and dont include
}
?>

注意:正如评论中所建议的,可以通过扫描允许的目录来动态填充允许的列表。

One of the good way to handle this is to define a white list of file that can be included. If anything isn't in that list, it should be considered evil and never included.

For example :

<?php
$allowed = array('file1', 'file2', 'file3');

if (in_array($_GET["url"], $allowed)) {
    // You can include
} else {
   // Error message and dont include
}
?>

Note : As suggested in the comment, the allowed list can be populated dynamically by scanning allowed directory.

后来的我们 2024-10-13 18:06:11

你真的不应该有任何看起来像这样的代码。我的意思是真的。你想用这个实现什么目的?我确信还有另一种方法可以达到同样的效果,而且没有风险(比如说一般的丑陋)。

正如 HoLyVieR 所建议的,将可包含的内容列入白名单是确保当前代码安全的关键。

You really shouldn't have any code that looks like that. And I mean really. What are you trying to achieve with this? I'm sure there's another way to the same without the risks (and let's say general uglyness).

Like HoLyVieR suggests, whitelisting what can be included is the key to making your current code safe.

落花浅忆 2024-10-13 18:06:11

为什么不在您的网站上创建 test.php 并在链接中使用 http://mywebsite.com/test.php 呢?这样,如果需要,您可以将初始化脚本包含在 test.php 中(以及其他脚本中)。

Why don't you just create test.php on your site, and use http://mywebsite.com/test.php in the link? This way you can include your initialization script in test.php (and in the other scripts) if needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文