The ultimate clean/secure function

后端 未结 7 2260
忘掉有多难
忘掉有多难 2020-11-22 03:11

I have a lot of user inputs from $_GET and $_POST... At the moment I always write mysql_real_escape_string($_GET[\'var\'])..

I

7条回答
  •  忘了有多久
    2020-11-22 03:42

    The idea of a generic sanitation function is a broken concept.

    There is one right sanitation method for every purpose. Running them all indiscriminately on a string will often break it - escaping a piece of HTML code for a SQL query will break it for use in a web page, and vice versa. Sanitation should be applied right before using the data:

    • before running a database query. The right sanitation method depends on the library you use; they are listed in How can I prevent SQL injection in PHP?

    • htmlspecialchars() for safe HTML output

    • preg_quote() for use in a regular expression

    • escapeshellarg() / escapeshellcmd() for use in an external command

    • etc. etc.

    Using a "one size fits all" sanitation function is like using five kinds of highly toxic insecticide on a plant that can by definition only contain one kind of bug - only to find out that your plants are infested by a sixth kind, on which none of the insecticides work.

    Always use that one right method, ideally straight before passing the data to the function. Never mix methods unless you need to.

提交回复
热议问题