【问题标题】:php 5.5 text area input filtering & output escapingphp 5.5 文本区域输入过滤和输出转义
【发布时间】:2014-04-14 01:51:53
【问题描述】:

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

不幸的是,关于这个主题的大部分信息都是旧信息(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)。

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

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

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

我应该如何转义输出?

我希望输出可读。

提前谢谢你。

【问题讨论】:

  • 这取决于您的需求。您是否将文本区域输入保存在数据库中,其他文本文件?您想将其显示为纯文本、HTML 还是使用自己的“代码”系统,如 BBCode?​​span>

标签: php html mysql forms sanitization


【解决方案1】:

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

  1. 使用 strip_tags 来避免 HTML、CSS 和 JS 标记。
  2. 使用 str_replace("'","\'", $string) 防止 SQL 注入解析 单引号。
  3. 使用 substr 将字符串剪切为 500 个字符,如果 超过限制。

我建议您访问: 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

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2017-12-16
    • 2015-06-08
    • 2019-04-04
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多