3 ms·
If using PHP, use PDO and always use parameters. Use HTMLPurifier to avoid xss. You still need to be careful if building queries dynamically, such as dynamic
by elchief 15y ago
If using PHP, use PDO and always use parameters.
Use HTMLPurifier to avoid xss.
You still need to be careful if building queries dynamically, such as dynamic WHERE or ORDER by clauses.
- antihero 15y agoI'd take that one step further and use an ORM like Doctrine, because otherwise doing trivial stuff is completely annoying. If you don't use an ORM package you quickly start writing your own ORM anyway.
- elchief 15y agoAgreed, but even some ORMs (like Yii's ActiveRecord) don't validate the field name in the WHERE part in certain functions.
- Jebus 15y agoHTMLPurifier? That thing should only be used if you are accepting html as input (eg: wysiwyg). Just escape everything in the view layer (not in the DBAL. There you only escape to avoid sql injection, not XSS!)
- elchief 15y agowhat if someone puts html in a plain old text field? your db should never contain xss material. some jackass will forget to escape it on display.
- Jebus 15y agoThe thing is, you can't just 'escape XSS'. You need to know exactly where the data is going to be used, and you can't know that when you store it (in fact, you could use the same data in many different places). There are infinite ways of doing XSS, so if you don't escape properly, you are still vulnerable. The view layer should escape everything by default. Then if you need a different filter, or disable escaping (for wysiwyg for instance), do it manually.
- elchief 15y agobut how often is someone's username <script>stealMahCookeez()</script> ?