消除用户输入,是否安全?

时间:2013-01-16 00:48:49

标签: php security

我想知道最安全的方法来清理给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安全性。

3 个答案:

答案 0 :(得分:2)

考虑到在大多数领域中使用所有角色的业务需求,输入卫生的概念实际上是徒劳的,特别是在名称领域(想想O'Hara先生,Smith-Meyer夫人和Möller先生),以及鉴于在其他情况下几乎任何角色都是危险的。每当它改变上下文时(例如当你将它放入数据库查询,shell命令或输入到动态生成的HTML / CSS / JS /无论什么时),你应该考虑正确地转义/编码你的字符串数据。使用安全的API进行数据库访问,例如预准备语句,而不是通过字符串连接来构造SQL。

话虽如此,您可能会发现OWASP PHP filtersOWASP ESAPI for PHP有用。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

查看http://htmlpurifier.org/,但这不仅仅是消毒。