可排序的表安全问题

时间:2013-10-14 07:55:18

标签: php jquery mysql sql

我想开发一个可排序的表,当用户点击标题列时,表将通过JSON检索数据并显示它。为了使其工作,我必须将数据库列和数据库表名等信息与列一起放入。当用户点击它时,这些值将传递给服务器并检索更新的数据。

所以我的问题是,公开数据库表和表列名称是否安全?我一直在考虑使用php会话来存储这些信息,只显示链接到信息的会话ID。但问题是,如果我这样做,如果用户打开我的网站的多个标签,排序将无效。

你知道其他更好的方法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

Datatables是一个jQuery插件,可以完全按照您的要求执行操作,并提供许多不同的功能。它允许您按列对表进行排序。数据表的一些示例: http://datatables.net/examples/

您还可以使用ajax获取数据。看一下这个例子:http://datatables.net/release-datatables/examples/ajax/ajax.html

人们使用有超过2000万行的数据表,看看http://datatables.net/release-datatables/examples/data_sources/server_side.html

答案 1 :(得分:0)

我尽可能在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>

这将是我能想到的最简单,最安全的解决方案。

的问候,