我需要我的用户在他们的个人资料中输入他们个人网站的URI ,以便其他用户可以看到并点击它。我担心如果输出没有正确清理,这可能会导致XSS 攻击。
就像下面这个非常简单的模式一样:
我使用的是全栈symfony2 框架,Doctrine作为 ORM,Twig作为模板引擎。我知道 Symfony 提供了一些令人惊叹的验证工具,并且 TWIG 提供了自动输出转义(在这种特殊情况下不是必需的)以及一些用于输出清理的过滤器。
我已阅读以下有关symfony2 和 twig 如何处理消毒的内容:
Doctrine 带有对数据库 (SQL) 注入的清理。除此之外,在 Symfony2 的控制器级别没有推荐/提供的输入清理。但是,在视图中使用 Twig,输出清理是可用的。
例如,在CakePHP中:
数据清理被实现为可以从任何地方(控制器、组件、模型……甚至视图)访问的实用程序。它遵循使用一组固定的预定义清理过滤器的清理所有输入方法。使用专用规则清理特定输入是可能的,但似乎不被鼓励。现有规则集中于 SQL 和 HTML 注入并过滤掉一般可疑的 unicode 字符。
1用户如何symfony2 + twig
处理输入清理?他们是否完全放弃输入清理,例如仅依赖验证?还是他们编写自己的实用函数来过滤用户输入?或者也许使用像owasp-esapi-php这样的库?
2用户如何symfony2 + twig
处理输出清理?他们是否仅依赖 twig 引擎提供的过滤器?例如,是否已经有任何工具可用于清理用户输入的 URI,类似于此?
3在这种情况下,您将如何处理数据库存储和用户输入的 URI 的显示,就像上面的示例一样,您会关心输入清理吗?还是只使用输出清理并按原样存储 URI?