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


Comprehensive Security Against User Input - PHP, MySQL

可能重复:
什么';用PHP清除用户输入的最佳方法是什么
什么是最好的PHP输入清理函数
终极清洁/安全功能

目标:在进入DB之前,正确地清除文本框中的所有输入,然后将其输出到页面。对于我的用例,我需要在不消除数据输入的同时防止潜在的问题。此外,在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来查找问题的答案。不幸的是,这一次我找不到任何其他问题来回答我的问题,只是其中的一小部分。

XSS攻击

通过在输出用户输入的内容时使用htmlspecialchar(),可以确保您不会受到XSS攻击。

SQL注入

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

尽管您的代码可能使用mysql_real_eescape_string()免受SQL注入攻击,但您最好使用参数化SQL并完全消除SQL注入的风险。如果您在PHP中使用PDO或mysqli,而不是不推荐使用的mysql函数,您也会更加安全。