我正在一个有国际目标的网站上工作; I.o.w.,登录用户可以用自己的语言添加文本。我希望有国际页面名称和内容。
一个URL示例,如日语维基百科:http://ja.wikipedia.org/wiki /メインページ(页面名称和内容文本)。
我知道使用UTF-8,我可以做到这一点,但我该如何控制呢?
UTF-8包含了在脚本中控制许多语言/字母的方法,我想,那么允许人们添加UTF-8文本有多安全/不安全?
我可以看到有人可以通过这种方式添加有害代码,但是如何防止呢?
使用UTF-8时所有关于安全/控制的信息都很受欢迎!
编辑:PS!我使用PHP和MySQL。答案 0 :(得分:2)
警告:可能是一个稍微生疏的回应:
注意:不讨论主机名(IDNS)问题。
这里唯一完全安全的是使用%-escaped UTF-8。有些浏览器会将其显示为您想要的内容,有些浏览器会显示%-escapes。 (例如http://foo.bar/%ee%cc%cf.html)
如果你在网址中加入'真正的UTF-8',那么很多东西都会有效,但在某些浏览器中,某些人可能会遇到令人不快的意外情况。我正在阅读你的问题,因为处理100%的静态内容。如果您尝试使用网站后面的代码执行此操作,则还有其他问题需要处理。
“不愉快的惊喜”将是(a)人们发现URL中的%xx不可读,(b)融化的浏览器,(c)某些数据抓取或聚合融化的应用程序。
我希望我对此更新,但我不是,所以我的建议是部署一个测试网站,然后尝试使用您可以放手的所有内容(包括移动电话)访问它。说服Google对其进行索引,看看那里会发生什么。
答案 1 :(得分:0)
对于域名,这称为IDN。对于页面名称,您可能需要考虑IDN spoofs的可能性。
答案 2 :(得分:0)
只要您不将字面解释为SQL(SQL注入)或HTML(XSS)或任何其他语言,它就是安全的。只需在SQL或HTML中使用它,就可以转义任何用户控制的输入(请求URL,请求标头,请求参数,请求体等等。等等。)
目前还不清楚你正在使用哪种服务器端编程语言,所以我无法进一步详细说明。