我想开发一个可排序的表,当用户单击标题列时,该表将通过 JSON 检索数据并显示它。为了使其工作,我必须将数据库列和数据库表名称等信息与列一起放置。当用户点击它时,这些值将被传递到服务器并检索更新的数据。
所以我的问题是,暴露数据库表和表列名是否安全?我一直在考虑使用 php session 来存储这些信息,并且只公开链接到信息的 session id。但问题是,如果我这样做,如果用户打开我网站的多个选项卡,排序将不起作用。
你知道其他更好的方法吗?
谢谢。
Datatables 是一个 jQuery 插件,它几乎可以完成您想要做的事情,并且还提供了许多不同的功能。它允许您按列对表格进行排序。数据表的一些示例:http: //datatables.net/examples/
您还可以使用 ajax 获取数据。看看这个例子:http ://datatables.net/release-datatables/examples/ajax/ajax.html
人们使用 20+ 百万行的数据表,看看http://datatables.net/release-datatables/examples/data_sources/server_side.html
只要有可能,我会尝试在 GET/POST 中使用整数而不是基于文本的键,默认情况下你是安全的。
您真的不需要将密钥保存到会话中,只需将它们翻译成:
$columns = array(
'1' => 'UserID',
'2' => 'FirstName
...
)
$order = 1;
if (isset($_REQUEST['order'])) $order = (int) $_REQUEST['order'];
$orderName = $columns[$order];
//beware the bug of unset key
//the ugly sql
$sql = 'select .. from .. order by ' . $order;
在 html-grid 中,使用
<a href="?order=2"/>FirstName</a>
那将是我能想到的最简单和最安全的解决方案。
问候,