Insecure_Deserialization
PHP serialization format
letters representing the data type and numbers representing the length of each entry. For example, consider a User object with the attributes:
This can be interpreted as follows:
O:4:"User"
- An object with the 4-character class name"User"
2
- the object has 2 attributess:4:"name"
- The key of the first attribute is the 4-character string"name"
s:6:"carlos"
- The value of the first attribute is the 6-character string"carlos"
s:10:"isLoggedIn"
- The key of the second attribute is the 10-character string"isLoggedIn"
b:1
- The value of the second attribute is the Boolean valuetrue
If you are on white box pentesting and have search forserialize()
andunserialize()
functions
Checklist
Mitigation
Generally speaking, deserialization of user input should be avoided unless absolutely necessary
implement a digital signature to check the integrity of the data.
any checks must take place before beginning the deserialization process
If possible, you should avoid using generic deserialization features altogether Instead, you could create your own class-specific serialization methods so that you can at least control which fields are exposed.
Last updated