我的网站上有文字框。此文本框使用form和post方法提供文本值。 此表单在数据库中搜索特殊文本。 我怎样才能确定sql injectin或xss的安全输入数据。
答案 0 :(得分:6)
由于Symfony2中ORM数据库样式的性质,您自然会受到SQL注入的保护。在到达数据库之前,与配置或Validator类设置的约束不匹配的数据将被拒绝。
数据在传递到请求类之前会自动编码。 XSS是不可能的,因为在接收方和输出方都没有数据是RAW形式,除非你指定它,在这种情况下你会否定内置的安全性。
表单中的XSS是不可行的,因为默认情况下Symfony(使用表单类时)将在表单提交中创建CSRF令牌以验证请求的发件人。除非您特别禁用它们,否则它们将自动生成并包含在隐藏字段中。
symfony的内置功能只是第一步,最佳做法是使用数据变换器确保您的数据具有您期望的格式和类型。
数据变形金刚:http://symfony.com/doc/current/cookbook/form/data_transformers.html
最后,在SQL注入的注释中,使用内置的“查询”构建器或使用DQL语言(如果使用的原则)是另一层安全性,以防止在使用高度自定义的查询时进行注入。