Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 网袋安全_Python_Web_Websocket_Chat_Tornado - Fatal编程技术网

Python 网袋安全

Python 网袋安全,python,web,websocket,chat,tornado,Python,Web,Websocket,Chat,Tornado,我决定写一篇websocket聊天,他支持短信[无限字符数,不像Twitter:)]和文件传输。 问这个问题。如何制作平庸的身份识别数据?也就是说,当连接打开时,服务器只是一组字节,即使有json,也很容易替换:标记为“message”并发送混乱的文件(因为字符数不受限制,它将发送给所有用户)。 简而言之,就是如何辨别来自用户的信息 提前谢谢 不接受通过jquery传输文件,因为websocket不受保护 UPD 任何不理解问题本质的文章。解释:1。有一个关于龙卷风WS的聊天。2.在聊天室中,可

我决定写一篇websocket聊天,他支持短信[无限字符数,不像Twitter:)]和文件传输。 问这个问题。如何制作平庸的身份识别数据?也就是说,当连接打开时,服务器只是一组字节,即使有json,也很容易替换:标记为“message”并发送混乱的文件(因为字符数不受限制,它将发送给所有用户)。 简而言之,就是如何辨别来自用户的信息

提前谢谢

不接受通过jquery传输文件,因为websocket不受保护

UPD 任何不理解问题本质的文章。解释:1。有一个关于龙卷风WS的聊天。2.在聊天室中,可以发送文字信息和文件。3.我用javascript控制它,但是如果有人建立连接并发送一个文件,例如,作为消息?客户端接收到大量“未知字节”。情况是这样的-{'msg':'Hello,world!!1'};{'file':文件}。一切都很好,但如果{'msg':一个文件},那就太可惜了。应该很清楚;)

欢迎来到SO

在我回答你的问题之前,请允许我澄清关于这个网站和我们社区的几点。这是你的第一个问题,也许你不知道:

  • 所以(StackOverflow)不是一个论坛,它更像是一个聊天室和一个图书馆。如果你问一个问题,你需要在网上至少呆上一两个小时,以便在有人问你时登记并提供更多信息

    如果有人询问更多信息,请编辑问题-不要在评论中回答(您可以添加一条评论,说明您更新了问题,但问题应该编辑)

    如果你不在这里澄清你的问题,它将被关闭,因为有许多人需要答案,我们优先考虑在这里回答的人

  • 重要的是,你的问题包括你已经尝试过的信息。如果您的问题中包含一些您在尝试自己的解决方案时编写的代码,那就更好了

    否则,你会觉得你正试图将你的工作外包给社区——这是一个很大的禁忌

  • 重要的是,你的问题要清楚,并且要用你能掌握的最好的英语写作

  • 请阅读评论,了解我对社区期望的含义


    至于Websocket安全性

    我不知道您使用的是哪种语言,所以我会用它来写,因为它对我来说更容易,而且我认为代码会更容易阅读

    websocket以HTTP连接开始,然后“升级”为websocket连接

    由于大多数应用程序已经有了为网站编写的HTTP安全/身份验证逻辑,因此最好对WebSocket使用相同的安全/身份验证逻辑

    这通常在升级连接之前完成

    诚然,有时人们会为websocket编写一个新的安全/身份验证逻辑层,但这并不是解决此问题的最有效方法(主要是因为在身份验证仍在处理时,消息可能会发送到websocket,这将开启一个新的问题和考虑的世界)

    下面是一个使用的示例,它要求在升级之前进行身份验证。通过安装plezi gem(终端:
    $[sudo]gem安装plezi
    )并在irb(终端:
    $irb
    )中运行以下代码来测试此示例:

    需要“plezi”
    类WebsocketSecDemo
    #升级前调用pre_connect,但仍处于HTTP模式。
    def预紧连接
    #除非验证逻辑正常,否则返回false(拒绝连接)
    除非验证逻辑,否则返回false
    真的
    结束
    def on_消息数据
    放入“got#{data}”
    
    你自己试过什么吗?与我们分享。嗨!1.不允许用户建立多个连接(查看cookies)。但是这个选项是不安全的,获取开发人员控制台,您已经通过控制台建立了连接。数据的格式很容易伪造。2.关于文件有这样一个想法:用一个帧发送消息,对于相同片段的文件。因此,我可以区分这一点,但请看第一点,没有人能够避免伪造连接。3.是的,你当然可以限制字符的数量,但这也没什么帮助。你的问题到底是什么?这意味着什么:“如何制作平庸的身份识别数据?”这意味着什么:“简单地说,就是如何识别来自用户的信息?”。仅供参考,客户可以向webSocket发送他们想要的任何内容。在将数据传递给其他客户端之前,您的服务器必须准备好确保它获得的数据是预期的,并且是安全的。投票以“不清楚您在问什么”结束问题,因为问题不清楚,而且您在提问时没有澄清问题。您好@jfriend00,尽管您是对的,我们等一会儿怎么样。这是萨沙的第一个问题。很明显,英语不是Sasha的母语,问题提出才3个小时,你要求提供更多数据才1个小时——Sasha现在可能在不同的时区睡觉,现在无法回答你。。。让萨沙休息一下怎么样?我们曾经都是绿色的(我仍然觉得绿色)。谢谢你的回答!根据评论中的建议,我已经用细节更新了我的问题。查看此@Sasha,谢谢您提供更多详细信息。您能否单击问题标记列表下的
    编辑
    链接,并在问题中插入额外信息这将帮助其他没有阅读评论的人帮助你。此外,您还可以更新标记以添加Tornado和Python。完成!更改的问题和添加的标签)
    
    require 'plezi'
    
    class WebsocketSecDemo
        # pre_connect is called before the upgrade, while still in HTTP mode.
        def pre_connect
            # return false (refuse the connection) unless the auth logic is okay
            return false unless auth_logic
            true
        end
    
        def on_message data
            puts "got #{data}"
            response << data
            broadcast :ws_write, data
        end
    
        def index
            "Check this using http://www.websocket.org/echo.html
            \r\nConnect to the websocket at ws://localhost:3000/
            \r\nTo authenticate, visit http://localhost:3000/login
            \r\nTo un-authenticate visit http://localhost:3000/logout"
        end
        def login
            cookies[:my_auth] = true
            redirect_to :index
        end
        def logout
            cookies[:my_auth] = nil
            redirect_to :index
        end
    
        # protected methods aren't available to the HTTP router.
        protected
    
        def ws_write data
            response << data
        end
    
        # The worst auth logic in the history of man kind...
        def auth_logic
            cookies[:my_auth] == true
        end
    end
    
    Plezi.listen
    Plezi.route '/', WebsocketSecDemo
    
    # exit the terminal to start the demo
    exit