我正在通过制作cms来学习php,到目前为止一切都很顺利。我想要实现的下一件事是用户输入,更具体地说,我希望他们能够在网站上编写自己的帖子,问题,...就像在几乎每个论坛上一样。
现在问题就出现了,我已经阅读了多篇文章说你在允许用户输入时必须小心,因为他们可以做sql注射和xss注射等事情。虽然我发现了很多关于此的文章,但我没有找到任何体面的教程/指南来解决这个问题。
我挖得更深一些,发现你可以使用 php pdo prepare statements 来保护你的sql免于注入。问题#1解决了!
现在问题#2:xss注射。我已经读过你必须使用像 htmlspecialchars 这样的函数,但他们从未说过何时使用它们。 (在将其插入数据库之前或将其从数据库中拉出之前)我还阅读了关于HTML Purifier但是删除了所有js,因此您不能允许用户发布代码示例,而我真的需要...
如果您知道如何解决整个输入安全问题,请在下面发表评论/回答。非常需要和赞赏!
注意:如果它很重要,用户可以在markdown中输入他们的帖子,我已经可以用php转换为html。
答案 0 :(得分:1)
就处理XSS而言,通常在数据被拉回数据库之后处理。不要使用其他库,请查看此处的输出
具体来说,FILTER_SANITIZE_SPECIAL_CHARS
我还应该建议,如果您正在尝试学习处理安全性,那么您也要检查是否要保护自己免受XSRF攻击。以下是关于XSRF以及如何防范XSRF的好文章:
祝你好运!并指导你先实际做自己的研究!