python - 接收套接字大小限制好不好?

标签 python sockets

我正在用 Python 编写一个程序,它将充当服务器并接受来自客户端的数据,对数据量施加硬性限制是个好主意吗?如果是的话,为什么?

更多信息: 因此,某些聊天程序会限制每次发送(即每次用户按下发送键)可以发送的文本量,因此问题归结为是否存在合法原因,如果有,那是什么?

最佳答案

您很可能见过防止“额外”传入数据的代码。这通常是由于缓冲区溢出的可能性,即复制到内存中的额外数据超出了预分配的数组,并用攻击者代码覆盖了可执行代码。用 C 等语言编写的代码通常会进行大量长度检查,以防止此类攻击。 gets 和 strcpy 等函数被替换为更安全的函数,如 fgets 和 strncpy,它们具有长度参数以防止缓冲区溢出。

如果您使用像 Python 这样的动态语言,您的数组会调整大小,这样它们就不会溢出并破坏其他内存,但您仍然必须小心清理外部数据。

由于数据库字段大小等原因,聊天程序可能会限制消息的大小。如果您传入的消息中 80% 为 40 个字符或更少,90% 为 60 个字符或更少,98% 为 80 个字符或更少,为什么要让您的消息文本字段允许每条消息 10k 个字符?

关于python - 接收套接字大小限制好不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/203758/

相关文章:

c - hping怎么能这么快发包呢?

我可以在阻塞模式下在 send() 之后立即释放我的数据吗?

c++ - 非阻塞发送功能

python - 如何使用 Python 通过 Cloud Dataflow 将 CSV 文件导入 Cloud Bigtable?

python - 如何从文本中删除撇号?

python - Sqlalchemy - 向查询添加列

python - 以 UTF-8 格式从 lxml 错误日志中打印消息

python - Python ctypes 和 librsvg 出错

linux - 检测端口连接而不丢失数据

c - 将 char 类型转换为 int(用于套接字)