禁止文本字段中的字符

时间:2011-06-18 23:27:59

标签: php security special-characters

我是否应该禁止在“上传表单”文本字段中键入“,”,>,<,\ ...等字符?文本将通过PHP发送到博客。

我听说有些角色可能会造成麻烦,可能会被用来“破解/伤害”服务器。应该限制​​哪些字符?

感谢您的投入。 迈克尔

3 个答案:

答案 0 :(得分:1)

没有必要限制任何事情。问题是你必须清理所有用户输入;对于这种特定类型的数据(可能的HTML),在将所有数据显示为页面的一部分之前,对所有用户提供的数据使用htmlspecialchars是必要且足够的。

例如,如果您的表单有一个名为post-body的文本区域,您应该收到用户输入(例如,使用$_REQUEST['post-body'])并按原样将其保存到您的数据库中(警告:< / strong>在此阶段使用mysql_real_escape_stringPDO来保护自己免受SQL注入!)。当显示它时,您将从数据库中检索它并使用类似

的内容进行打印
echo htmlspecialchars($postBody);

有关数据清理的更多背景信息,请参阅this question

答案 1 :(得分:0)

每次输出用户数据时,htmlspecialchars函数都应清理用户数据,以避免XSS-attacks

此外,要在sql-queries中使用用户数据,请使用PDO和预准备语句或mysql_real_escape_string函数来避免SQL-injectionExample

答案 2 :(得分:0)

  <?    $string = str_replace("\\\"", "\"", $string);
        $string = htmlspecialchars($string);
        $string = preg_replace( "/\r\n|\n|\r/", "<br>", $string );   ?>

<input type = "text" name = "string" id = "string" value = "<?=$string?>">