下面的PHP代码是否涉及任何安全风险?

时间:2013-01-04 18:39:53

标签: php security

更新:以下代码被视为安全代码,如下所述涉及@JanDvorak @ MrCode,以及我在MrCode Answer的评论中:))

page1.php中

<form method="post" action="page2.php">
<textarea name="tryit" cols="!20" rows="10"></textarea>
</form>

第2.pp页

<?php
echo filter_input(INPUT_POST, 'tryit', FILTER_SANITIZE_SPECIAL_CHARS);
?>

我只是不希望任何用户执行任何系统代码或调用任何系统函数。

由于

3 个答案:

答案 0 :(得分:1)

代码在XSS方面是安全的,因为带有filter_input()标记的FILTER_SANITIZE_SPECIAL_CHARS将对HTML特殊字符进行编码,从而防止XSS漏洞。

来自Manual

  

<强> FILTER_SANITIZE_SPECIAL_CHARS
  HTML-escape'“&lt;&gt;&amp;和ASCII值小于32的字符,可选地剥离或编码其他特殊字符。

它与:

相同
echo htmlspecialchars($_POST['tryit']);

如果将代码移动到另一个上下文中,例如移动到SQL查询中,那么它就不再安全了。特殊字符编码特定于防止XSS。

答案 1 :(得分:0)

使用htmlspecialchars,这会替换所有特殊的html字符:& ' " < >&amp; &#039; &quot; &lt; &gt;,之后它们将显示为普通字符。

答案 2 :(得分:0)

此代码段不会执行操作系统或任何shell命令的任何功能。

filter_input也不会执行任何系统功能。

page2只会将POST收到的任何内容显示为文字。

$_POST['tryit']中存储的值不会受到影响。当您再次访问该变量时(或在某处存储其HTML转义版本),您需要单独清理它。

filter_input不常用。您可以使用特定的转义函数。