1

我想知道清理提供给 PHP 脚本的数据的最安全方法,这是我想出的功能,您认为使用它是否足够安全?

function santatizeName($data)
{
    $data = filter_var($data, FILTER_SANITIZE_STRING); 
    $data = preg_replace('/[^a-z]/i','',$data); //Removes everything but letters.
    $data = ucfirst($data); //Capatilizes first letter.

    return $data;
}

希望得到您的反馈,这是 PHP 安全的新手。

4

3 回答 3

2

考虑到在大多数字段中使用所有字符的业务需求,尤其是在姓名字段中(想想 O'Hara 先生、Smith-Meyer 夫人和 Möller 先生),输入卫生的概念实际上对字符串是徒劳的,并且鉴于事实几乎任何角色在其他情况下都是危险的。您应该在字符串数据更改上下文时(例如当您将其放入数据库查询、shell 命令或输入到动态生成的 HTML/CSS/JS/whatever 中时)正确地转义/编码您的字符串数据。使用安全的 API 进行 DB 访问,例如准备好的语句,而不是通过字符串连接构造 SQL。

话虽如此,您可能会发现OWASP PHP 过滤器OWASP ESAPI for PHP很有用。

于 2013-01-16T01:05:27.547 回答
1

您可能需要查看以下有关清理过滤器的 php 文档。

http://php.net/manual/en/filter.filters.sanitize.php

http://php.net/manual/en/ref.filter.php

于 2013-01-16T00:57:00.437 回答
0

查看http://htmlpurifier.org/虽然它不仅仅是消毒。

于 2013-01-16T01:00:39.647 回答