tkt989 🍵 ブログ

日々のメモ

jQuery DataTablesを使うときのXSS対策

2018/02/07

var result = /* サーバーから取得したデータとか */

$("#dataTable").DataTable({
	data: result,
	columns: [
		{ data: "name" },
		{ data: "age" },
		{ data: "tel" },
		...
	]
});

なにも考えずにそのままデータを追加すると、サニタイズされないのでXSSが成立してしまう。

なので、ユーザーから入力されたものを含んだデータはrender$.fn.dataTable.render.text()を設定しておきましょう。

$("#dataTable").DataTable({
	data: result,
	columns: [
		{ data: "name", render: $.fn.dataTable.render.text() },
		{ data: "age",  render: $.fn.dataTable.render.text() },
		{ data: "tel",  render: $.fn.dataTable.render.text() },
		...
	]
});

参考

DataTables - Security