Cassandra手册分页:将pageState公开给客户端(在nodeJS中)

将pageState公开给客户端是否安全? 它是链接到原始查询,还是我可能暴露其他数据? 在我目前的实现中,客户端可以发送任何东西作为pageState。

长话短说:我正在NodeJ上构buildREST api,并从Cassandra集群中获取我的数据。 由于查询有相当大的结果,我需要做一些分页。 我得到了手动分页工作,但在我目前的实现中,我发送pageState到客户端,并将其发送回来,以获得下一批结果。

if(req.query.page) { options.pageState = new Buffer(req.query.page,'hex'); }; client.eachRow(query, [], options, function (n, row) { arr.push(row); }, function (err, result) { res.send({ values: arr, next: result.pageState }); }); 

另一个想法是将其保存在某种caching中,并向客户端发送一个id。 我会发送该服务器和客户端之间的id,并且pageState不能被修改。 只是想知道这是开销,还是实际需要。 谢谢。

正如驱动程序的分页文档中所述 (请参阅脚注),可以操纵页面状态标记以检索同一列族中的其他结果,因此将其暴露给用户是不安全的。

你不应该公开页面状态作为一个明确的文本值,你应该散列它。