node.js - Cassandra手动分页: exposing pageState to client (in nodeJS)

标签 node.js pagination cassandra cassandra-2.0

向客户端公开 pageState 是否安全?它是否链接到原始查询,或者我可能会暴露其他数据吗?在我当前的实现中,客户端可以将任何内容作为 pageState 发送。

长话短说: 我正在 NodeJs 上构建 REST 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
             });
        });

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

最佳答案

pagination docs of the driver 中所述(请参阅最底部的脚注),可以操纵页面状态 token 来检索同一列族中的其他结果,因此将其公开给用户是不安全的。

您不应将页面状态公开为明文值,而应对其进行哈希处理。

关于node.js - Cassandra手动分页: exposing pageState to client (in nodeJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34423834/

相关文章:

node.js - 如何通过node运行testcafe

php - 分页功能不适用于 1 以外的页面

Oracle 和分页

erlang - 从 erlang 插入 cassandra

cassandra - 使用 LeveledCompactionStrategy 时是否可以检查 sstable 属于哪个级别?

javascript - 如何创建 Mongoose 架构,将输入保存为 mongodb 中的 html

javascript - API 端点在不等待 promise 的情况下返回有什么缺点吗?

node.js - Angular 通用销毁模块ref

html - 隐藏表行经典的ASP

gocql Query.Get() 与 Query.GetRelease()