gpt4 book ai didi

php laravel 的选择可能是黑客的一个错误

转载 作者:搜寻专家 更新时间:2023-10-31 21:33:49 24 4
gpt4 key购买 nike

我在 Controller 中执行此操作

$sources = array('' => 'Select Source') + Sources::lists('name', 'id');

其中 Source 是一个模型。

然后在 View 中,我这样做:

{{Form::select('source_id', $sources, '', $sources)}}
<span>{{$errors->first('source_id')}}</span>

结果 HTML 是:

<select ="select="" source"="" dubizzle="Dubizzle" name="source_id">
<option value="" selected="selected">Select Source</option>
<option value="1">Dubizzle</option>
</select>

如您所见,第一个选项 Select Source 没有任何值。因此,当我提交表单时没有选择任何来源,并像这样验证输入:

$validation = Validator::make(Input::All(), XMLDocument::$rules);
if($validation->passes()){}else{
return Redirect::back()->withInput()->withErrors($validation);
}

我收到错误消息,指出需要 source_id

效果很好。

我的问题

我使用 Google Chrome F12 开发工具检查 HTML,并向 Select Source 选项添加了一个值。然后我提交表单并且验证没有发现错误。那是因为 source_id 有一个值。

黑客可以轻松操纵 HTML,我的服务器和数据库将崩溃,因为此 source_id 是一个外键,所有内容都与它相关。

请问如何自救?

更新 1

验证 source_id 的规则是:

'source_id' => 'required|integer',

最佳答案

代替:

$sources = array('' => 'Select Source') + Sources::lists('name', 'id');

您可以使用:

$sources = array('Select Source') + Sources::lists('name', 'id');

所以第一项将是:

<option value="0">Select Source</option>

然后在你的规则中添加not_in:0,例如:

'source_id' => 'required|integer|not_in:0'

它会起作用,因为您的数据库中没有元素/记录的 ID 为 0。我总是这样做。

关于php laravel 的选择可能是黑客的一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com