php - PHP - Laravel:尝试将 javascript 代码保存到 mysql 数据库时出现 403 禁止错误
问题描述
我知道这通常是不受欢迎的,但由于我将在下面说明的具体原因,我需要这个功能:
所以我们在这个网站上所做的是我们允许用户购买他们可以销售产品的“商店”,现在这些用户想要在他们的商店中添加“Facebook Pixel”之类的东西,以便他们跟踪不同的活动.
这是我负责代码的表格
<form action="{{ url('vendor/store/settings/analytics/update') }}" method="POST" style="margin-top: 30px;">
{{ csrf_field() }}
<div class="analytics-form">
<div class="col-md-8 col-md-offset-2 analytics-box">
<div class="form-group">
<label for="">Please pick a type of analytics to install:</label>
<select name="analytic_type[]" id="" class="form-control">
@foreach($analytic_types as $type)
<option value="{{ $type }}">{{ ucwords(str_replace('_', ' ', $type)) }}</option>
@endforeach
</select>
<br>
</div>
<div class="form-group">
<label for="">Please type/paste the code for this analytic:</label>
<textarea class="form-control" cols="5" rows="5" name="analytic_code[]" required></textarea>
<br>
</div>
</div>
</div>
<button class="btn btn-primary btn-block" id="applyAnalytics" type="submit" {{ $store->vendor->hasAnalytics() ? '' : 'disabled'}}>Apply Changes</button>
</form>
这是我想要“命中”的控制器方法:
public function updateAnalytics(Request $request)
{
try {
$store = auth()->user()->store;
auth()->user()->analytics()->delete();
if($request->has('analytic_type')) {
foreach($request->analytic_type as $index => $value) {
Analytics::create([
'user_id' => auth()->user()->id,
'analyticable_id' => $store->id,
'analyticable_type' => get_class($store),
'method_type' => $request->analytic_type[$index],
'method_code' => $request->analytic_code[$index],
]);
}
}
flash(__("Common.Saved_Successfully"));
} catch (\Exception $e) {
session()->flash('title', __("Common.Error"));
session()->flash('message', __("Common.An_Error_Happened"));
session()->flash('message-class', "error");
}
return redirect()->back();
}
如果我在 textarea 中输入普通文本或代码,此方法在本地运行良好,但如果我尝试输入并提交以下代码块,一切都会崩溃,此代码块是Facebook Pixel提供给其用户的代码块,我想保存在我的数据库中:
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '339673053324500');
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=339673053324500&ev=PageView&noscript=1"
/></noscript>
<!-- End Facebook Pixel Code -->
如果我将上面的代码放入文本区域并将数据提交到服务器,则会出现以下错误:
禁止的
您无权访问此服务器上的 /app/public/vendor/store/settings/analytics/update。此外,在尝试使用 ErrorDocument 处理请求时遇到 403 Forbidden 错误。
只要我提交代码,服务器甚至不允许我访问有问题的路由或此表单中的任何其他路由。
笔记:
这可能不是一个实际的权限问题,而是一个与安全相关的事情,因为我已经尝试将服务器上所有相关文件的权限从 0644 更改为 0755 并且没有任何改变,当然我可能在此过程中做错了什么,欢迎所有建议。
解决方案
推荐阅读
- android - Flutter 日志垃圾邮件
- c# - 为什么这个 MVC 方法不能以并行方式运行?
- javascript - 如何通过使用纯 JavaScript 选中复选框来显示表格?
- javascript - 子组件未定义
- c++ - C/C++ 内存模型是否允许相同字节的不同粒度的原子?
- c++ - 函数的特化。指针类型名和字符串之间的区别?
- postgresql - PostgreSQL,试图将日期列从 csv 文件复制到表的列
- reactjs - 在modal中打开一个新的modal并关闭上一个
- sqlite - 如何模拟变量、循环和串联以在 SQLite 中协同工作?
- azure - 对于 AKS 入口,letsencrypt 证书请求失败