PHP RFC: Deprecate and Remove ext/wddx
- Version: 0.9.3
- Date: 2018-09-17
- Author: Christoph M. Becker, firstname.lastname@example.org
- Status: Under Discussion
- First Published at: https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx
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
__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.
Therefore I suggest the following procedure:
- PHP 7.4: deprecate ext/wddx (particularly issue E_DEPRECATED whenever a
wddx_*()function is called, or a WDDX session is written or read)
- PHP 8.0: move ext/wddx to PECL/wddx (without removing the deprecation)
Backward Incompatible Changes
Obviously, code using the wddx extension would issue deprecation warnings, and would have to use the wddx extension from PECL as of PHP 8.0, or be rewritten.
- Stas suggests to move to PECL with PHP 7.4 without deprecation
Proposed Voting Choices
Whether to implement the proposal above, or not.
This RFC requires a 2/3 majority
Patches and Tests
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