[英]Avoiding XSS when echoing POSTed HTML
我有一个网页,需要执行以下操作:
我的第一种方法是使用document.write
将HTML复制到窗口中。 在大多数情况下,这是可行的,但是当原始窗口设置了document.domain
时,它将导致Internet Explorer出现问题。 再加上最近不建议使用document.write
。
所以我的第二种方法是将HTML放入隐藏的表单中 ,将表单的目标设置为新窗口,然后发布表单。 这意味着我需要服务器上的脚本来通过回显POSTed内容来响应表单。
但这很危险,因为有人可以发出在内容中包含<script>
标记的请求。 如何避免潜在的XSS风险 ? 我想我可以过滤掉<script>
类的东西,尽管看起来很笨拙。 如果要在服务器上创建HTML,则可以对其进行加密,或者添加一些只能在服务器上验证的令牌。 但是我正在客户端上创建它。
编辑:感谢到目前为止的筛选建议。 我可能会选择这条路线,但我想知道:如果我不想对创建的HTML进行任何限制怎么办? 有什么方法可以验证文档是由页面创建的吗?
尝试HTML Purifier 。
编辑:
“有什么方法可以验证文档是由页面创建的吗?”
除非您创建html服务器端的另一个副本并进行比较,否则不会。 脚本中的任何内容都可以被用户查看,尽管您可能会使非技术用户感到困难。 客户端Javascript可以执行的任何操作,恶意用户都可以在Javascript控制台上执行。
即使您以某种方式验证了请求来自脚本,恶意用户也可以使用Javascript控制台通过插入会产生危险请求的代码行来修改脚本。 所有GET和POST数据都必须视为恶意数据。
试试PHPIDS 。
PHPIDS(PHP入侵检测系统)是基于PHP的Web应用程序的易于使用,结构合理,快速且具有最新技术的安全层。 IDS既不清除,清除也不过滤任何恶意输入,它只是识别攻击者何时试图破坏您的网站并以您希望的方式做出反应。 根据一组经过批准并经过严格测试的过滤器规则,任何攻击都将获得数值影响等级,从而可以轻松决定应采取何种行动。 从简单的日志记录到向开发团队发送紧急邮件,向攻击者显示警告消息,甚至结束用户会话,范围可能很大。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.