我是否应该禁止在“上传表单”文本字段中键入“,”,>,<,\ ...等字符?文本将通过PHP发送到博客。
我听说有些角色可能会造成麻烦,可能会被用来“破解/伤害”服务器。应该限制哪些字符?
感谢您的投入。 迈克尔
答案 0 :(得分:1)
没有必要限制任何事情。问题是你必须清理所有用户输入;对于这种特定类型的数据(可能的HTML),在将所有数据显示为页面的一部分之前,对所有用户提供的数据使用htmlspecialchars
是必要且足够的。
例如,如果您的表单有一个名为post-body
的文本区域,您应该收到用户输入(例如,使用$_REQUEST['post-body']
)并按原样将其保存到您的数据库中(警告:< / strong>在此阶段使用mysql_real_escape_string
或PDO来保护自己免受SQL注入!)。当显示它时,您将从数据库中检索它并使用类似
echo htmlspecialchars($postBody);
有关数据清理的更多背景信息,请参阅this question。
答案 1 :(得分:0)
每次输出用户数据时,htmlspecialchars
函数都应清理用户数据,以避免XSS-attacks。
此外,要在sql-queries中使用用户数据,请使用PDO和预准备语句或mysql_real_escape_string
函数来避免SQL-injection。 Example
答案 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?>">