当前位置:  开发笔记 > 编程语言 > 正文

如何安全地允许嵌入内容?

如何解决《如何安全地允许嵌入内容?》经验,为你挑选了1个好方法。

我经营一个自己写的网站(有点像社交网络).我允许成员互相发送评论.在评论中; 我接受评论然后调用此行,然后将其保存在数据库中..

$com = htmlentities($com);

当我想要显示它; 我把这段代码称为..

$com = html_entity_decode($com);

这在大多数情况下效果很好.它允许用户复制/粘贴youtube/imeem嵌入代码并相互发送视频和歌曲.它还允许他们将图像上传到photobucket并复制/粘贴嵌入代码以发送图片注释.

我的问题是,有些人基本上都在那里放入javascript代码,往往会做一些令人讨厌的东西,比如打开警报框,更改网页的位置和类似的东西......我正在努力找到一个很好的解决方案来解决这个问题一劳永逸..其他网站如何允许这种功能?

感谢您的反馈意见



1> troelskn..:

首先:htmlentities或者只是htmlspecialchars用于转义嵌入HTML的字符串.将它们插入SQL查询时,不应该使用它来转义字符串 - 使用mysql_real_escape_string(For MySql)或更好 - 使用带有绑定参数的预处理语句.magic_quotes手动转义字符串时,请确保已关闭或禁用.

第二:当你再把它拉出来时,你不会忘记它们.例如.没有mysql_real_unescape_string.你也不应该使用stripslashes- 如果你发现你需要,那么你可能已经启用了magic_quotes - 转而关闭它们,并在继续之前修复数据库中的数据.

第三:你正在做的事情html_entity_decode完全取消了它的预期用途htmlentities.现在,您绝对无法防止恶意用户将代码注入您的网站(您很容易受到跨网站脚本攻击,即XSS).嵌入到HTML上下文中的字符串应该使用htmlspecialchars(或htmlentities)进行转义.如果您必须将HTML嵌入到页面中,则必须先通过清理解决方案运行它.strip_tags这是理所当然的 - 但在实践中它是非常不合适的.我目前所知道的最好的解决方案是HtmlPurifier.但是,无论您做什么,让随机用户将代码嵌入您的网站始终存在风险.如果可能的话,尝试设计您的应用程序,使其不需要.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有