这可以是XSS编辑的吗?

时间:2016-09-22 10:31:53

标签: php xss

编辑:我的问题不是如何防止XSS,因为我已经知道如何,但是如果用户可以绕过双引号删除。谢谢你:))

这是否容易受到XSS的攻击:

<img src="" alt="<?php echo str_replace('"', '', $_POST['imageDescription']);?>" title="Image">

例如,如果用户输入的"><script>alert('hacked');</script>因为双引号被删除而无法正常工作,但是这仍然可以被XSS化吗? 我总是验证数据,但我只是想知道。

2 个答案:

答案 0 :(得分:0)

是的,它仍然容易受到XSS的攻击。有许多技术可以挫败这一点,并且授予了许多我不知道的东西。我相当肯定的一件事可以被滥用来绕过这个,就是发送无效的UTF-8。其中,当通过你的代码(或通过其他方式)运行时,然后转换为有效的“角色。从而不仅绕过你的努力,而且依靠它们来完成XSS攻击。
当然,它需要更多的工作,但那些做这些事情的人并不介意额外的工作。

您在这里所做的事情被称为“黑名单”,这意味着您已删除/禁止您认为有害的内容。这种方法的问题在于,您必须知道现在和将来都有害的所有,以使其有效。当然,没有人可以做到这一点 这种兄弟方法叫做白名单,你只允许输入你想要的输入。确保恶作剧的空间尽可能地狭窄,并且在某些情况下完全消失(如果列表足够小)。

但是,这些都不是100%肯定要避免XSS攻击。唯一能做到这一点的是输出转义。对于HTML,执行此操作的功能是htmlspecialchars()I recommend reading the manual for it,并特别注意它的注释。

答案 1 :(得分:-1)

security.stackexchange中的帖子解释了这一点。显然,如果替换双引号,则无法在alt图像中使用XSS。

但是,当您处理潜在的安全问题时,最好不要重新发明轮子。使用经过验证的方法。

当您将PHP数据回显到HTML中时使用htmlspecialchars(),以便将任何HTML符号转换为非危险字符。

有关如何避免XSS攻击的更多信息,请look here