我应该不允许的字符,如”,“,>,<,\ ...在一个上传表单文本字段中键入?文本将通过PHP被发送到博客。不允许字符
我heared一些字符可能造成麻烦,并且可以用来“劈/伤害”服务器,这些服务器。字符应限制?
感谢您的输入。 迈克尔
我应该不允许的字符,如”,“,>,<,\ ...在一个上传表单文本字段中键入?文本将通过PHP被发送到博客。不允许字符
我heared一些字符可能造成麻烦,并且可以用来“劈/伤害”服务器,这些服务器。字符应限制?
感谢您的输入。 迈克尔
没有必要限制任何东西。在问题是你必须消毒所有的用户输入;对于这种特定类型的数据(可能的HTML),在将所有用户提供的数据显示为页面的一部分之前,使用htmlspecialchars
是必要且足够的。
例如,如果在窗体中有一个名为post-body
textarea的,你应该接受用户输入(与$_REQUEST['post-body']
EG),并将其保存到你的数据库,是(警告:使用mysql_real_escape_string
或PDO保护自己免受SQL在这个阶段注射!)。到时候来显示它,你会从数据库中检索,并与打印的东西像
echo htmlspecialchars($postBody);
见this question对数据的消毒一些背景。
用户数据每次输出用户数据时都应该通过htmlspecialchars
函数进行消毒,以避免XSS-attacks。
另外,要在sql-queries中使用用户数据,请使用PDO并准备好语句或mysql_real_escape_string
函数以避免SQL-injection。 Example。
感谢您的宝贵意见。 – Michael
<? $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?>">
不要黑名单字符。将他们列入白名单。 –
对不起,这是什么意思? – Michael
http://en.wikipedia.org/wiki/Whitelist –