【问题标题】:Cassandra manual pagination: exposing pageState to client (in nodeJS)Cassandra 手动分页:将 pageState 暴露给客户端(在 nodeJS 中)
【发布时间】:2016-03-29 04:32:41
【问题描述】:

向客户端公开 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。只是想知道这是开销还是实际需要。谢谢。

【问题讨论】:

    标签: node.js pagination cassandra cassandra-2.0


    【解决方案1】:

    正如pagination docs of the driver(见最底部的脚注)中所述,页面状态令牌可以被操纵以检索同一列族中的其他结果,因此将其暴露给用户是不安全的。

    您不应将页面状态公开为明文值,而应将其散列。

    【讨论】:

    • 我不敢相信我错过了那个脚注。感谢您指出。哈希是个好主意,比我想象的要好得多。
    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2012-02-22
    • 2017-04-16
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多