0

page1.php

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

第 2.php 页

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

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

谢谢

4

3 回答 3

1

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

手册

FILTER_SANITIZE_SPECIAL_CHARS
HTML-escape '"<>& 和 ASCII 值小于 32 的字符,可选择剥离或编码其他特殊字符。

它与以下内容相同:

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

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

于 2013-01-04T18:47:11.167 回答
0

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

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

page2只会显示POSTas 文本收到的任何内容。

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

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

于 2013-01-04T18:52:13.763 回答
0

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

于 2013-01-04T18:48:08.530 回答