3
我在我的Laravel网络应用程序上使用jQuery Datatables。我使用packagist chumper/datatable
来处理Datatables服务器处理。Datatables encode HTML
不幸的是,我发现了严重的安全问题,即XSS(跨站点脚本)。 服务器返回JSON数据,客户端将数据加载到表中而不会转义它们。
如何让客户端在将数据加载到表中之前转义数据?
我在我的Laravel网络应用程序上使用jQuery Datatables。我使用packagist chumper/datatable
来处理Datatables服务器处理。Datatables encode HTML
不幸的是,我发现了严重的安全问题,即XSS(跨站点脚本)。 服务器返回JSON数据,客户端将数据加载到表中而不会转义它们。
如何让客户端在将数据加载到表中之前转义数据?
fnCreatedRow
是一个回调函数,用于在创建行之后处理表格行元素。我们可以使用这个回调函数修改行之前将行插入到HTML文档中。
我用chumper/datatable
生成这样的功能:
$table = Datatable::table()
->addColumn('ID', 'Username', 'Name', 'Email', 'Actions')
->setUrl(URL::to('admin/users/data'))
->setOptions(array('aoColumns' => array(array('sType' => 'numeric'), null, null, null, array('bSortable' => false))))
->setCallbacks('fnCreatedRow',
'function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
for (var i = 1; i < 4; i++) jQuery("td:eq(" + i + ")", nRow).text(aData[i]);
}'
)
->noScript();
return View::make('admin.users.index', compact('table'));
我用fnCreatedRow
所以td
元件显示为文本(HTML编码)数据,以修改每个td
元素的含量。