我创建了我的新网站。现在我学习和使用 Symfony。我有几个问题。
- 为什么默认的 Symfony 允许添加 HTML 标签到数据库?例如,我创建新模块,我转到模块/新,在标题中输入
<strong>test</strong>
然后保存它。在数据库 MySQL 中,我有<strong>test</strong>
.安全吗? - 我知道 - 如果我只使用 $test->getTitle() 那么这个渲染文本
<strong>test</strong>
,但是如果我想添加用户评论 WYSYWIG 并使用 RawValue() 怎么办?用户无法关闭标签</strong>
所有网站都坏了... - 例如,他们可以窃取 cookie?
- Symfony 有安全的所见即所得编辑器吗?如果我使用 CKEditor 或 TinyMCE 我是安全的?
- 在 stackoverflow 上有 WMD Markdown ,但在任何地方都找不到。他如何在数据库中保存 html 标签?
**test**
?
最佳答案
1a) 对什么安全?只要您的数据库操作在插入查询之前通过 mysql_real_escape_string() 清理所有用户输入,那么恶意用户就无法通过注入(inject)攻击来攻击您的数据库。数据库中的 HTML 与数据库中的任何其他文本一样 - 它只是带有一些额外“奇怪”字符的文本。
1b) 至于它为什么允许它,你有明确告诉它不允许 html 吗? PHP/Symphony/MySQL 完全按照您的要求进行操作。
2) 确保 HTML 有效由您决定。您可以使用类似 HTML Purifier 的东西修复“损坏的”html。
3) 如果您正在进行 HTML 清理/过滤,那么用户可以嵌入 <script>
阻止他们通过该方法添加和窃取 cookie 的 html...
4) 那些编辑只是编辑。他们展示内容并让您(或其他人)编辑展示的内容。它们安全或不安全,如您所愿。它们只是工具。如果您向某人提供一把上膛的枪,那么如果有人被 Gunicorn ,请不要感到惊讶。
5) 仅仅因为某些文本中有任何类型的标签,并不能使该文本神奇地与其他文本“不同”。 MySQL 不关心、不需要知道,甚至不必知道您正在将 Markdown 文本插入到字段中。它只存储您告诉它的内容,并在您需要时将其拉回。
关于php - 应该如何在数据库中保存为 HTML 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867204/