阻止用户在textarea中输入PHP代码?

时间:2011-06-09 03:18:04

标签: php html security textarea xss

我有一个带有textareas的PHP页面,用户可以更改,并且他们的值会被保存并显示在另一个PHP页面上 - 我担心这可能容易受到XSS攻击(或者恶意黑客今天使用的任何攻击)......我看到http://htmlpurifier.org是避免XSS攻击的一个很好的解决方案,我在一个SO线程中读到,进入textarea的PHP代码被浏览器忽略而不是服务器端执行。我只是想知道htmlpurifier是否会完全保护我的网站,如果像IE6这样的老浏览器有可能不够智能忽略这样的PHP代码。这是我第一次创建一个复杂的网站,所以我会围绕安全主题提示......谢谢:)

在旁注中,我使用了stripslashes和nl2br来避免使用撇号和换行符来格式化问题,但是我还应该使用其他任何东西来避免意外的显示问题吗?

3 个答案:

答案 0 :(得分:7)

在输出中使用htmlspecialchars(),特殊字符不再具有字面含义,浏览器不会处理。

浏览器将忽略PHP代码本身。浏览器会认为它只是一些奇怪的<?php ... '?>元素。

答案 1 :(得分:1)

专门回答你的问题......

不,您不必担心浏览器执行用户输入的PHP代码。当你在PHP脚本中“包含”时,这通常只是你必须担心的事情,即使这样,只要你正确地构建它们,你就没有什么可担心的了。这是因为PHP在服务器端(在您的Web服务器上)而不是客户端(在浏览器中)被解释。此外,这种类型的攻击更符合RFI或代码注入(如果你想要谷歌的某些条款),而不是XSS。

Stripslashes可用于某些事情(可能与SQL攻击等有关),但不是XSS攻击的主要防御措施。

HTMLPurifier自行运行,你可以很好地抵御XSS攻击(提供正确的配置等)。

也就是说,最好是针对白名单过滤用户输入,而不是尝试将“坏”字符/输入列入黑名单。您希望用户能够输入什么类型的数据?只是常规文字? BBCode +文字? HTML吗?

答案 2 :(得分:0)

PHP代码是服务器代码。浏览器不包含PHP解释器,因此不会执行它。