何时以及如何在与数据库交互时对HTML进行编码/解码?

时间:2017-05-05 20:45:43

标签: php html sql database html-encode

我有一个运行PHP和MySQL数据库的网站。我想知道如何最好地处理关于HTML编码的用户输入(我很清楚我应该按原样存储并在输出中解码:这就是我所做的),特别是这个循环:

  • 用户注册填写带有用户名字段的表单,该字段的内容经过验证并发送并存储在DB 中,因为(无HTML编码),因为输出HTML将需要,XML,JSON,纯文本和其他格式;
  • 在任何需要显示用户名的页面上,它将从数据库中提取,HTML编码并显示在页面中;
  • 在特定页面上,用户名被放置在html文本输入的“value”字段中:显然这意味着用户名必须是HTML编码的(否则XSS和所有那些奇妙的东西......)。但是,这也意味着如果原始用户名是“però”,则文本字段将为<input value="per&ograve;">,当用户提交时,服务器将收到per&ograve;而不是però

现在我的问题是:服务器应解码所有收到的输入,以便per&ograve;解码为原始però吗? 我怀疑这是否意味着如果用户输入&egrave;作为他的用户名,它将被注册为è而不是他实际想要的......

我知道这不是一个大问题(不知道许多用户想要在他们的用户名中使用HTML特殊字符编码文字......),但它让我困惑,我找不到完全令人满意的溶液

0 个答案:

没有答案