使用PHP防止XSS

时间:2011-03-10 04:07:38

标签: php html xss

防止XSS真的意味着我必须运行htmlspecialchars()每次输出一些用户输入吗?例如,每次我显示用户名?看起来真的很乏味。

有更简单的方法吗?

3 个答案:

答案 0 :(得分:3)

如果您担心成为攻击的目标,那么您应始终确保从您的网站提交表单,而不是从外部来源提交表单。您可以使用会话:如果会话中的值,表单没问题,否则表单是使用bot提交的。

如果您担心托管恶意脚本,那么是的,您将不得不逃避所有用户输入的内容以供公众和管理员使用。

这应该会更容易:

function h($string) {
    return htmlspecialchars($string);
}

您可能需要考虑一种可以为您转义变量的模板语言:

EG。 http://www.h2o-template.org/

答案 1 :(得分:0)

是的,每次都是。

唯一更简单的方法是使用为您执行此操作的模板。自己做一个,或者看一个像XSLT或我的个人最喜欢的PHPTAL

答案 2 :(得分:0)

它还取决于您期望的内容类型。例如,如果您只是期待信件,那么您可以

$input = preg_replace("/[^a-zA-Z]*/", "", $input);

或者如果你只是期待数字

$input = preg_replace("/[^0-9]*/", "", $input);

或者如果它是混合的并且预期会有其他字符,那么你将不得不使用

$input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');