关于针对用户输入的全面安全性:针对用户输入的全面安全性 – PHP,MySQL

Comprehensive Security Against User Input - PHP, MySQL

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What's the best method for sanitizing user input with PHP?
What are the best PHP input sanitizing functions?
The ultimate clean/secure function

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

规格:PHP,MySQL,Apache

示例代码:

1
2
3
4
5
6
7
8
    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攻击

通过在输出用户输入的内容时使用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函数,那么您也会更加安全。