php 5.5文本区输入过滤&输出转义

时间:2014-03-10 19:02:21

标签: php html mysql forms sanitization

通过研究清理HTML表单数据的最佳方法,我发现你应该“过滤输入”和“ESCAPE OUTPUT”。

不幸的是,关于这个主题的大部分信息都有旧信息(PHP 4.x,2009等)。许多网页都推荐mysql_real_escape_string,从PHP 5.5.0开始不推荐使用它。

我使用的是PHP 5.5.x,Apache Web服务器和MySQL数据库。我正在使用PDO准备好的声明。所有字符集都是UTF-8。

我查看了PHP Sanitize过滤器(在此处找到:http://www.php.net/manual/en/filter.filters.sanitize.php)。

我已经过滤了所有输入并转义了所有输出,除了我的textareas。文本区域供用户“描述事件”。它们相当大,500个字符。这是我觉得最容易受到恶意代码攻击的地方。

我对所有输入做的第一件事是trim()功能。

在输入上运行的最佳过滤器是什么?

我应该如何逃避输出?

我希望输出可读。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

答案取决于您要过滤的输入种类。 假设你只想在textarea中使用简单的纯文本,所以你需要避免使用javascript,css和html代码,你需要在这个输入中防止SQL注入,并且只获得500个字符的长度。

  1. 使用 strip_tags 来避免HTML,CSS和JS代码。
  2. 使用 str_replace (“'”,“\'”,$ string)来阻止SQL注入解析 单引号。
  3. 如果是,请使用 substr 剪切500字符串中的字符串 超过限制。
  4. 我建议你访问: https://www.owasp.org/index.php/Top_10_2013-Top_10

    另外,我建议使用PHP框架来避免使用这种常见安全风险的传统方式。

    在我看来,你可以使用Zend,Code Igniter或Laravel。

    1. http://ellislab.com/codeigniter/user-guide/libraries/input.html
    2. http://framework.zend.com/manual/2.0/en/modules/zend.filter.html
    3. http://laravel.com/docs/validation