2013-09-01 46 views
0

对于跨site_scripting漏洞验证不受信任的HTML输入是否必须处理每个输入?

1)它来验证和逃生的用户输入

2)每一个好主意,用strip_tags的不够好,什么是htmlpurifier在它的好处?

+1

1.是的。 2.始终使用服务器端验证('mysqli_real_escape_string()'和其他类似的方法)(js验证是好的,它可以绕过) –

回答

0

是的,这是一个好主意。我会尽可能地说,如果你不是你是白痴。将数据存储在数据库中时使用prepared statements and bound parameters。如果你使用这个(就像你应该那样),你不需要手动转义进入数据库的数据。

现在显示数据取决于您想要允许的以及要输出的位置。如果它将显示在HTML页面上,并且您不想允许任何HTML呈现,请使用htmlspecialchars($content, ENT_QUOTES)。你几乎不需要使用htmlentities,因为它会转换所有有HTML实体的字符。这意味着它会让你的文件变得没有必要变大如果你想允许一些HTML,你必须在显示它之前过滤它(使用HTML净化器)。

请注意,不同的存储机制和不同的输出介质需要不同的转义/消毒策略。

+0

+1,在不同的存储需要不同的转义策略的情况下?我想如果你使用的是数据库,则不需要转义。 –

+1

例如,如果您要发送电子邮件而不是存储在数据库中,则必须注意标题注入。 – PeeHaa