0

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

目标:在进入数据库之前正确清理来自文本框的所有输入,然后将其输出到页面。对于我的用例,我需要在不消除数据输入的情况下防止潜在问题。此外,字符集在 HTTP 标头和 META 标记中都明确设置为 UTF-8,以防止出现格式错误的编码问题。数据库也设置为 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 来查找我的问题的答案。不幸的是,这一次我找不到任何其他问题可以回答我的问题,只有一小部分。

4

1 回答 1

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 函数,您也会更加安全。

于 2012-07-28T20:21:37.163 回答