2008-10-15 50 views
2

我正在用Python编写一个程序,它将充当服务器并接受来自客户端的数据,如果是这样的话,对数据量施加硬限制是个好主意?接收套接字大小限制好?

更多的信息: 所以某些聊天程序限制了每发送一次可发送的文本的数量(即每次用户按下发送),所以问题归结为是否有一个合法的原因,如果是的话,它是什么?

回答

2

很有可能您已经看到了防止“额外”传入数据的代码。这通常是由于缓冲区溢出的可能性,其中额外的数据被复制到内存中超出了预先分配的数组,并用攻击代码覆盖可执行代码。用C语言编写的代码通常有很多长度检查来防止这种类型的攻击。诸如get和strcpy之类的函数被替换为它们更安全的对象,比如fgets和strncpy,它们有一个长度参数来防止缓冲区溢出。

如果你使用像Python这样的动态语言,你的阵列调整,因此他们不会溢出,揍其他内存,但你还是要小心消毒国外资料。

聊天程序可能限制邮件大小等原因数据库字段的大小。如果您收到的邮件中有80%是40个字符或更少,90%是60个字符或更少,98%是80个字符或更少,为什么您的邮件文本字段允许每个邮件10k个字符?

1

你的问题到底是什么?

当你收到一个插座上会发生什么事是,在插座缓冲区中的当前可用的数据立即返回。如果您给予接收(或读取,我猜),一个巨大的缓冲区大小,如40000,它可能永远不会返回那么多的数据。如果你给它一个像100这样的小缓冲区大小,那么它将立即返回100个字节,并且仍然有更多的可用空间。无论哪种方式,您都不会限制客户端向您发送多少数据。

0

我不知道但是实际的应用程序是什么,对一个客户端可以发送可以减少你暴露服务攻击,如拒绝是有用的数据总量设置硬性限制客户端会连接并发送100MB的数据,这些数据可能会无法接受您的应用程序。

但它确实取决于你的应用程序。你是在每行限制或每个连接的总限制之后还是什么?

相关问题