回应用户输入文本的安全问题

时间:2010-09-08 06:26:58

标签: php security xss

我接受表单中的用户文本并在页面上回显它(代码也会转到数据库,但这是准备好的查询,所以不用担心)。我想知道是否有可能由它引起的安全隐患?在服务器端,我的意思是,我知道在客户端你可以打破,但你能到达服务器端吗?

我需要知道在这种情况下是否可以使用eval之类的东西。

4 个答案:

答案 0 :(得分:2)

您解释的场景称为XSS。在XSS漏洞的帮助下可能会破坏您的服务器,但它确实需要其他一些东西。

假设您有一个管理员帐户,该帐户有权通过Web对您的服务器进行配置更改。现在,如果攻击者创建了一个XSS链接并以某种方式让管理员点击它,他的帐户就会受到攻击。

一旦攻击者具有管理员访问权限,他就可以系统地控制整个系统。这最近发生在Apache - read their article on it上。这是我见过的最安全事件的最佳记录,你将从中学到很多东西。

答案 1 :(得分:0)

在php中使用htmlspecialchars($ yourstring)或剥离字符,无需打开漏洞利用的可能性。

答案 2 :(得分:0)

如果直接使用用户输入来查询SQL数据库,则可以进行SQL注入。只需谷歌以示例。

编辑:哦,我错过了文字,说你只是回应文字。嗯,也许用户可以在评估用户输入时发出PHP命令。但我不知道为什么你应该这样做因为那时用户可以向服务器发出任何PHP命令(这是一个明显的安全风险)......

答案 3 :(得分:0)

使用:

echo htmlentities($string);

无处不在。除非您想要将应用程序打开几十种可能的攻击:

http://ha.ckers.org/xss.html

如果您需要回显HTML标记:

1)在将HTML保存到数据库之前,在HTML上使用HTMLPurifier。

2)我建议使用XHTML STRICT过滤。

3)禁止脚本,框架,onclick等属性等标签。输入HTML的用户永远不需要的标签和属性列表很长。只是限制它们可能需要的东西,例如:p,ol,ul,h1,h2,h3,dl,abbr,img(这些可能是危险的,很多可能的攻击通过img标签,小心),a(detto),表,也许还有一些。