html - 使用 BBCode 输入和 HTML 输出避免 XSS

标签 html codeigniter xss bbcode htmlspecialchars

我目前正在一个网站上工作,用户可以在该网站上撰写几乎没有可能的格式(例如粗体、斜体、列表...)的文章。我正在使用一个框架:CodeIgniter。

我是初学者,听说过一些关于 XSS 的东西。我想知道您对我的实现有何看法。我读了这个主题: What's the best method for sanitizing user input with PHP?

1) 用户写他的文章,用 BBCode 格式化。我正在使用 SCEditor。

2) 将其保存到数据库中时,我使用 htmlspecialchars() 来过滤任何可疑的 HTML 标记。我应该在保存数据或显示数据时执行此操作吗?

3) 当我想在网站上显示文章时(例如用于其他用途),我将 BBCode 标签转换为 HTML 标签。

这样做正确吗?我在避免 XSS 吗?

我显然乐于接受建议和意见。

感谢您的回答

最佳答案

用于验证的 Codeigniter 有一个属性 xss,它将完成所有这些工作人员

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');

检查表单验证 Codeigniter:

http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

关于html - 使用 BBCode 输入和 HTML 输出避免 XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17188259/

相关文章:

发现 SQL 注入(inject)漏洞

javascript - 如何获得垂直对齐元素的正确顶部位置?

javascript - 如何将 div 容器放在另一个 div 容器内,在一个选项卡内

php - CSS - 如何在两个元素之间匹配类(一个动态的和一个静态的)

php - JSON 编码将数组乘以单个数组

escaping - 跨站点脚本(XSS): Do I need to escape the ampersand?

html - 将箭头样式的列表元素包装在另一个箭头中

php - 在 CodeIgniter 中扩展 Controller 类

php - 使用 dbForge 插入查询未插入默认值

java - Jsoup删除字符串中的多个空格