Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет. Такая проблема : все таблицы с системе у меня на bootstrap-table, который принимает данные таблицы из json.
К примеру я создаю продукт с таким именем : s srEW%@#$ #@$ #$<script>alert(5);</script> , сохраняю, в БД (string) хранится в таком же виде : s srEW%@#$ #@$ #$<script>alert(5);</script>
Затем открываю продукты и мне выдает сообщение alert(5) .
Как решить проблему, экранирования?
В бд добавляются все данные через метод :
function store($attributes) {
$model = $this->model->newInstance($attributes);
if (!$model->save()) {
return new ExceptionResponse(trans('home.store_error'));
}
return $model;
}
теперь осталось узнать как ты их открываешь.
Не в сети
теперь осталось узнать как ты их открываешь.
То есть открываешь? Вот вывод продуктов шаблон:
<script>
$('#table').bootstrapTable({
url: 'product/json',
method: 'get',
columns: [{
field: 'name',
sortable: true,
title: '@lang('product.name')'
},
{
field: 'description',
sortable: true,
title: '@lang('product.description')'
}]
});
</script>
@endsection
<table id="table"
data-toggle="table"
data-search="true"
data-show-refresh="true"
data-sort-name="status"
data-sort-order="desc"
data-pagination="true"
data-page-list="{{ config('constant.table.pagination') }}"
data-side-pagination="server">
</table>
Ну, Laravel же тут не причем - когда в шаблоне Blade выводится переменная, она будет экранироваться по умолчанию, а у Вас в JS отдаются данные в формате JSON
Коверкать данные из БД перед конвертацией в JSON - было бы как-то некорректно
Здесь, по-хорошему, bootstrapTable должен экранировать
Не в сети
Страницы 1