Is it totally safe to insert array serialized with serialize() into db, or I should do addslashes(serialize($array)) before? Or there can be some mysql specific characters? Can I delete data or whatever with insert? 
            Asked
            
        
        
            Active
            
        
            Viewed 2,233 times
        
    1
            
            
        2 Answers
4
            No it is not safe at all.
And you should never use addslashes but mysql_real_escape_string instead. Or even better, use PDO with prepared statements instead of escaping.
 
    
    
        ThiefMaster
        
- 310,957
- 84
- 592
- 636
- 
                    2**DO NOT USE `addslashes()`!** Use `mysql_real_escape_string()` to escape your data for a MySQL database. Always. – ThiefMaster May 08 '12 at 10:50
- 
                    ..unless you're using data-binding, or writing the data to something which is not mysql. Addslashes is always the wrong answer, mysql_real_escape_string() is not always the right one. – symcbean May 08 '12 at 12:01
- 
                    The question is tagged with [tag:mysql], so in this case it is the correct answer. – ThiefMaster May 08 '12 at 12:03
- 
                    You don't have to. You escape characters which would otherwise have a special meaning in the query. So the data which is actually stored does not contain the escape characters. – ThiefMaster May 08 '12 at 22:14
4
            
            
        It's totally ***un****safe* to insert the serialized data in the database without database-specific processing.
You should use whatever mechanism is recommended for preventing SQL injections with your chosen database access layer; making the queries safe against injections includes properly escaping the data as well, so you 'll hit two birds with one stone.
See How can I prevent SQL injection in PHP? for specific examples.
- 
                    2@Eugeny89: **Do not do that!** `addslashes` is not a good solution, as it will only work *most* of the time. Please take the time to read the question I linked to. – Jon May 08 '12 at 10:50
- 
                    note that I'm serializing an array. How can I unescape after `mysql_real_escape_string`? – Eugeny89 May 09 '12 at 06:16
- 
                    1
 
     
     
    