6

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

我是一个初学者,我听说过一些关于 XSS 的东西。我想知道您对我的实施有何看法。我阅读了这个主题: 使用 PHP 清理用户输入的最佳方法是什么?

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

2) 将其保存到数据库时,我使用 htmlspecialchars() 过滤任何可疑的 HTML 标记。当我保存数据或显示数据时,我应该这样做吗?

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

这是正确的方法吗?我在避免 XSS 吗?

我显然愿意接受建议和意见。

感谢您的回答

4

3 回答 3

2

我使用 PHP “查找和替换”,但我认为这不是最有效的方法。

<?php
    $malicious = "<script>alert(1)</script>";
    $malicious = str_ireplace("<", "", $malicious);
    $malicious = str_ireplace(">", "", $malicious);
    echo $malicious;
?>
于 2013-06-22T20:44:37.540 回答
2

用于验证的 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

于 2013-06-19T10:07:06.493 回答
0
<?php
$malicious = "<script>alert(1)</script>";
$malicious = strip_tags($malicious);
$malicious = htmlentities($malicious, ENT_QUOTES);
echo $malicious;
?>
于 2013-07-27T19:33:26.000 回答