What are the best practices for avoiding xss attacks in a PHP site

前端 未结 20 2356
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-22 02:34

I have PHP configured so that magic quotes are on and register globals are off.

I do my best to always call htmlentities() for anything I am outputing that is derive

相关标签:
20条回答
  • 2020-11-22 03:26

    This is a great question.

    First, don't escape text on input except to make it safe for storage (such as being put into a database). The reason for this is you want to keep what was input so you can contextually present it in different ways and places. Making changes here can compromise your later presentation.

    When you go to present your data filter out what shouldn't be there. For example, if there isn't a reason for javascript to be there search for it and remove it. An easy way to do that is to use the strip_tags function and only present the html tags you are allowing.

    Next, take what you have and pass it thought htmlentities or htmlspecialchars to change what's there to ascii characters. Do this based on context and what you want to get out.

    I'd, also, suggest turning off Magic Quotes. It is has been removed from PHP 6 and is considered bad practice to use it. Details at http://us3.php.net/magic_quotes

    For more details check out http://ha.ckers.org/xss.html

    This isn't a complete answer but, hopefully enough to help you get started.

    0 讨论(0)
  • 2020-11-22 03:28

    There are a lot of ways to do XSS (See http://ha.ckers.org/xss.html) and it's very hard to catch.

    I personally delegate this to the current framework I'm using (Code Igniter for example). While not perfect, it might catch more than my hand made routines ever do.

    0 讨论(0)
提交回复
热议问题