This is an old revision of the document!
PHP RFC: Unbundle ext/wddx
- Version: 1.1.0
- Date: 2018-01-14
- Author: Christoph M. Becker, cmb@php.net
- Status: Under Discussion
- First Published at: https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx
Introduction
WDDX has been designed as programming language independent data exchange format for the web1). However, it never has been formally standardized, and it appears that it has been mostly superseeded by other data exchange formats such as JSON.
A particular problem is that PHP 4.0.0 added the ability to (de)serialize class instances2) including calls to __sleep()
and __wakeup()
, respectively. Therefore, wddx_deserialize()
must not be called on untrusted user input to avoid remote code execution, basically defeating the purpose of WDDX. A former RFC proposed to “Deprecate class instance deserialization in WDDX”, but it has been withdrawn since that would break BC, and there seemed to be generally more consensus on deprecating the extension altogether.
Proposal
Therefore I suggest to unbundle ext/wddx. A secondary vote will be held about the detailed procedure:
- deprecate all functionality of the extension for PHP 7.4; move to PECL for PHP 8
- deprecate all functionality of the extension *and* move to PECL for PHP 7.4
- move the extension to PECL for PHP 7.4
- dump the extension for PHP 7.4
Backward Incompatible Changes
Obviously, code using the wddx extension would issue deprecation warnings, and/or would have to use the wddx extension from PECL (or somewhere else), or be rewritten.
Open Issues
- None
Proposed Voting Choices
The primary vote is about whether to unbundle ext/wddx, which requires a 2/3 majority.
A secondary vote will be held about the detailed procedure (see the proposal above). If the primary vote passes, the alternative with the most votes will be accepted.
Patches and Tests
None, yet.
Implementation
After the project is implemented, this section should contain
- the version(s) it was merged into
- a link to the git commit(s)
- a link to the PHP manual entry for the feature
References
- Former discussion regarding WDDX serialization and security
- Discussion of the former RFC
Rejected Features
None.