PHP缓冲区是否可能溢出?

PHP缓冲区是否可能溢出?,php,buffer-overflow,Php,Buffer Overflow,可能重复: 当我进入这个世界时,我正在阅读: 缓冲区溢出攻击试图使PHP应用程序内的内存分配缓冲区溢出,更严重的是,在Apache或底层操作系统中。请记住,您可能正在使用像PHP这样的高级语言来编写Web应用程序,但最终,您将调用C(在Apache中)来完成工作。和大多数低级语言一样,C语言对内存分配有严格的规则 什么?我知道PHP经过了很好的错误检查,所以缓冲区溢出是不可能的。我应该检查用户输入长度以避免数据流过大吗? 非常感谢是的,在中,已经有15个与之相关的错误修复: 修复了apach

可能重复:

当我进入这个世界时,我正在阅读:

缓冲区溢出攻击试图使PHP应用程序内的内存分配缓冲区溢出,更严重的是,在Apache或底层操作系统中。请记住,您可能正在使用像PHP这样的高级语言来编写Web应用程序,但最终,您将调用C(在Apache中)来完成工作。和大多数低级语言一样,C语言对内存分配有严格的规则

什么?我知道PHP经过了很好的错误检查,所以缓冲区溢出是不可能的。我应该检查用户输入长度以避免数据流过大吗? 非常感谢

是的,在中,已经有15个与之相关的错误修复:

  • 修复了apache_请求_头中的bug#61807缓冲区溢出问题,CVE-2012-2329
  • 修复了crypt()中的过日志盐上的缓冲区溢出。(克莱门特·莱西涅,斯塔斯)
  • 修复了bug#60965(htmlspecialchars/entities上的缓冲区溢出,其中$double=false)
  • Mateusz Kocielski、Marek Kroemeke和Filip Palian发现socket_connect()(CVE-2011-1938)中存在固定堆栈缓冲区溢出。(Felipe)
  • 修复了mysqlnd\u列表\u字段、mysqlnd\u更改\u用户中可能出现的缓冲区溢出。(Andrey)
  • 修复了处理mysqlnd中的错误数据包时可能出现的缓冲区溢出。由Stefan Esser报告。(Andrey)
  • 修复了一个可能的过滤缓冲区溢出。由Stefan Esser报告。(Pierre)
  • 修复了错误#42862(IMAP工具包崩溃:rfc822.c遗留例程缓冲区溢出)。(修复CVE-2008-2829)(Dmitry)
  • 修复了FastCGI SAPI中可能出现的堆栈缓冲区溢出。(Andrei Nigmatulin)
  • 修复了fnmatch()、setlocale()和glob()函数的glibc实现中可能触发的缓冲区溢出。 劳伦特·加菲报道
  • 修复了错误42222(php#u openssl_make_REQ中可能存在的缓冲区溢出)。(Pierre)
  • 修复了make_http_soap_request()中的可远程触发的缓冲区溢出。(Ilia)
  • 修复了用户\过滤器\工厂\创建()中的缓冲区溢出。(Ilia)
  • 修复了捆绑的libxmlrpc库中远程触发的缓冲区溢出。(Stas)

当然,当调用实际使用C/C++编写的函数(这就是所有核心函数)时,可能会发生这种情况


我相信PHP提供的基本功能已经被检查过,比如缓冲区溢出,但是你不能确定何时使用自定义扩展。

< P>当然,它是可能的。我更感兴趣的问题是你认为攻击向量是在哪里做的(一个被升级的PHP bug等等)。。此外,我认为与其他安全问题相比,这是一个不太可能被利用的目标。

我想知道检查每个用户输入大小是否是一个好主意。那么,检查每个用户输入大小是否是一种安全的方法?不,我不会这样做。如果发生缓冲区溢出,这是一个PHP错误,应该予以修复。谢谢,是数据泛滥吗(让我们假设有人发布50MB的数据)可能有问题,但是可以通过配置标志post_max_size控制最大发布大小(请参阅)目前我的内存限制设置为54 mb,这会影响post_max_大小…你认为这是一个好的限制吗?再次感谢,你能检查每个用户输入大小以避免缓冲区溢出吗?@user1294101不,我不会。如果我知道有错误扩展或代码,我会提交错误报告。你应该检查用户输入的大小作为正常验证ion.谢谢,但为什么不检查输入大小是不安全的?太大的输入能做什么?@user1294101我的意思是,我检查输入大小是一个正常的验证例程,即某人的银行账号可能不是兆字节长……这不是因为
str\u replace
或其他任何东西中可能存在缓冲区溢出错误。@surferoffall不依赖于在浏览器上为您做任何事情,人们可以在不使用任何浏览器的情况下向您的服务器提交数据。客户端本身就不可信。