我需要我的用户在他们的个人资料中输入他们个人网站的URI,以便其他用户可以看到并点击它.我担心如果输出没有正确消毒,这可能会导致XSS攻击.
就像下面这个非常简单的架构一样:
我使用完整的堆栈symfony2框架,Doctrine作为ORM和Twig作为模板引擎.我知道Symfony提供了一些出色的验证工具,TWIG提供了自动输出转义(在这种特殊情况下不是必需的)以及一些用于输出消毒的过滤器.
我已经阅读了以下关于symfony2和twig如何处理清理的内容:
Doctrine附带数据库(SQL)注入的清理.除此之外,Symfony2中的控制器级别没有推荐/提供的输入清理.但是,在视图中使用Twig,可以进行输出清理.
例如,在CakePHP中:
数据清理作为实用程序实现,可以从任何地方访问(控制器,组件,模型甚至视图).它遵循一个使用一组固定的预定义清理过滤器的清理所有输入方法.使用专用规则消除特定输入是可能的,但似乎不鼓励.现有规则集中于SQL和HTML注入并过滤掉一般可疑的unicode字符.
1symfony2 + twig
用户如何处理输入清理?他们是否完全放弃了输入清理,例如仅依靠验证?或者他们是否编写自己的效用函数来过滤用户输入?或者使用像owasp-esapi-php这样的库?
2symfony2 + twig
用户如何处理输出清理?他们只依靠树枝引擎提供的过滤器吗?例如,是否已有任何工具可用于清理用户输入的URI,类似于此?
3在这种情况下,您将如何处理数据库存储和显示用户输入的URI,如上例所示,您是否关心输入清理?或者你只会使用输出清理并按原样存储URI?
你根本不用担心输入清理,Doctrine 不受 sql 注入的影响
默认情况下,所有输出都会被转义。所以即使$text有script标签,它也会被转义;以文本形式可见,但浏览器不执行。如果您想让http://example.com可点击,有 jquery 插件可以为您做到这一点。
我只会进行验证,有
new Symfony\Component\Validator\Constraints\Url() ;
Run Code Online (Sandbox Code Playgroud)可供您使用
归档时间: |
|
查看次数: |
8247 次 |
最近记录: |