针对用户输入的全面安全性 - PHP,MySQL

时间:2012-07-28 20:07:44

标签: php security xss code-injection sanitize

  

可能重复:
  What's the best method for sanitizing user input with PHP?
  What are the best PHP input sanitizing functions?
  The ultimate clean/secure function

目标:在进入数据库之前,正确清理文本框中的所有输入,然后输出到页面。对于我的用例,我需要在不消除数据输入的同时防止潜在的问题。此外,在HTTP标头和META标记中,字符集显式设置为UTF-8,以防止格式错误的编码出现问题。 DB也设置为UTF-8。

规范:PHP,MySQL,Apache

示例代码

    function secureinput($input)
    {
       $input = htmlspecialchars($input, ENT_QUOTES ,'UTF-8');
       $input = strip_tags($input); //fail-safe for anything that gets through
       $input = mysql_real_escape_string($input);

       return $input;
    }

问题:哪些攻击媒介(XSS,SQL注入等)仍然容易受到攻击?

非常感谢能够提供帮助的任何人。这是我第一次发帖,虽然我总是先找SO来查找我的问题的答案。不幸的是,这次我找不到任何其他问题来回答我的问题,只有很小的一部分。

1 个答案:

答案 0 :(得分:1)

XSS攻击

每当您输出用户输入的内容时,通过使用htmlspecialchars(),您可以确保您免受XSS攻击。

SQL注入

Steve Friedl在他的网站上提供了一些SQL注入和输入清理限制的例子:http://www.unixwiz.net/techtips/sql-injection.html

即使您的代码 可能 使用mysql_real_escape_string()防止SQL注入攻击,您最好使用参数化SQL并完全消除SQL注入的风险。如果在PHP中使用PDO或mysqli而不是弃用的mysql函数,那么你也会更安全。