处理用户输入以将其安全地存储在数据库中并像cms一样将其拉出

时间:2013-08-13 23:59:15

标签: php mysql xss sql-injection

我正在通过制作cms来学习php,到目前为止一切都很顺利。我想要实现的下一件事是用户输入,更具体地说,我希望他们能够在网站上编写自己的帖子,问题,...就像在几乎每个论坛上一样。

现在问题就出现了,我已经阅读了多篇文章说你在允许用户输入时必须小心,因为他们可以做sql注射和xss注射等事情。虽然我发现了很多关于此的文章,但我没有找到任何体面的教程/指南来解决这个问题。

我挖得更深一些,发现你可以使用 php pdo prepare statements 来保护你的sql免于注入。问题#1解决了!

现在问题#2:xss注射。我已经读过你必须使用像 htmlspecialchars 这样的函数,但他们从未说过何时使用它们。 (在将其插入数据库之前或将其从数据库中拉出之前)我还阅读了关于HTML Purifier但是删除了所有js,因此您不能允许用户发布代码示例,而我真的需要...

如果您知道如何解决整个输入安全问题,请在下面发表评论/回答。非常需要和赞赏!

注意:如果它很重要,用户可以在markdown中输入他们的帖子,我已经可以用php转换为html。

1 个答案:

答案 0 :(得分:1)

就处理XSS而言,通常在数据被拉回数据库之后处理。不要使用其他库,请查看此处的输出

PHP Sanitize filters

具体来说,FILTER_SANITIZE_SPECIAL_CHARS

我还应该建议,如果您正在尝试学习处理安全性,那么您也要检查是否要保护自己免受XSRF攻击。以下是关于XSRF以及如何防范XSRF的好文章:

Prevent XSRF

祝你好运!并指导你先实际做自己的研究!