如果我在laravel 5中的公共文件夹中公开文件php,我可以被黑客攻击

时间:2017-08-15 13:09:25

标签: php laravel

我有一个example.php并将其移动到laravel中的公共文件夹
example.php:

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

和welcome.php:

<?php
$name = $_POST['name'];
$email = $_POST['email'];

echo "your name: ".$name;
echo "your email: ".$email;
?>

结果:

your name: John
your email: John@gmail.com

因此。这是安全还是危险?感谢。

3 个答案:

答案 0 :(得分:1)

编写普通的php文件肯定比使用Laravel的框架MVC系统更不安全。 Web蜘蛛可以跟踪URL,即使在框架目录中也可能找到您的表单和操作URL。您可以通过多种方式解决该表单的问题,但最简单的方法是测试将<script>alert();</script>作为输入发送时会发生什么。

希望有所帮助

PS。

非常依赖编码和清理,如果你不用任何东西清理你的输入,正如我在PHP文件中看到的那样,你可以使用<script>作为输入,如果你消毒不好,也许<scri<script>pt>可以工作...或&#60;script&#62;等等...作为安全措施,你总是需要知道输入可能是恶意的,清理是框架为之做的事情之一你

答案 1 :(得分:1)

你必须记住的一件事是Laravel是MVC(模型 - 视图 - 控制器)框架。我在这段代码中看到的是“Vanilla”PHP和Laravel实际上并不打算以这种方式使用。

这里的重点是所有后端处理都应该在公共文件夹之外完成,即在模型和控制器组件中完成。你放在公共文件夹中的所有东西都有风险,因为公用文件夹有chmod 777.这意味着如果你在该文件夹的源文件中使用有风险的函数,黑客可能会利用它们。

答案 2 :(得分:1)

你设置代码的方式不是Laravel的使用方式。

为了最好地使用Laravel,您需要将表单html放在其自己的文件下的views文件夹中,例如:form.blade.php。

然后,您需要创建一个新的控制器php artisan make:controller FormController

我还建议制作一个Requests文件夹:php artisan make:request FormRequest

在请求中,您可以为每个所需的html name=字段打上标签,例如:

public function rules()
    {
        return [
            'name' => 'required',
            'email' => 'required',
        ];
    }

在您的路线文件中,您需要添加:

 Route::post('/link', 'FormController@submitForm');

在您的控制器中,您可以执行以下操作:

<?php
use \App\Http\Requests\FormRequest;

public function submitForm(FormRequest $formRequest)
    {
        // your logic would then go in here. Firstly fetch the request

        $fetchData = $formRequest->get();
    }

这只是你应该做的事情的基本分解。你显然需要填写逻辑。

html中的

PS ,因为我们已经添加了检查是否已填充的请求,您需要添加以下内容:

@if ($errors->has('name'))
    <span class="help-block">
        <strong>{{ $errors->first('name') }}</strong>
    </span>
@endif

我希望这能让你走上Laravel的正确轨道。

我还建议看看Laracasts,因为他们有一些很棒的教程。