更新:以下代码被视为安全代码,如下所述涉及@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);
?>
我只是不希望任何用户执行任何系统代码或调用任何系统函数。
由于
答案 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字符:& ' " < >
到& ' " < >
,之后它们将显示为普通字符。
答案 2 :(得分:0)
此代码段不会执行操作系统或任何shell命令的任何功能。
filter_input
也不会执行任何系统功能。
page2
只会将POST
收到的任何内容显示为文字。
$_POST['tryit']
中存储的值不会受到影响。当您再次访问该变量时(或在某处存储其HTML转义版本),您需要单独清理它。
filter_input
不常用。您可以使用特定的转义函数。