用户在网站上提交的内容

时间:2017-11-28 23:09:50

标签: javascript jquery html css iframe

我有我的网站项目,用户可以对帖子发表评论。我想允许用户提交YouTube视频。我想在iframe中显示它们,以便其他人看到视频的漂亮窗口。

但这意味着用户可以使用所有HTML标签和脚本来利用网站?

这样的东西 < a href="">< script>alert();< /script>">
哪会打破网站...

我有什么方法可以解决这个问题?

我想确保用户不能使用任何标签..但是当发布链接时,它会将其包装在iframe中。

我想到的一种方法就是只为将包含在iframe中的网址添加单独的输入窗口。但这使一切变得复杂。我还想坚持一个评论窗口。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

  1. 不要让用户输入HTML。
  2. 解析YouTube网址的用户评论。
  3. 将网址替换为指向提供的网址的<iframe>
  4. 这是一个非常简单的JavaScript示例。

    https://jsfiddle.net/ntgs3ypt/

    &#13;
    &#13;
    var comment = document.querySelector('textarea');
    var output = document.querySelector('div');
    
    var str = comment.value;
    var regex = /(https:\/\/www.youtube.com\/embed\/\w*)/;
    
    if (regex.test(str)) {
    
      str = str.replace(regex, '<iframe width="560" height="315" src="$1" frameborder="0" allowfullscreen></iframe>');
      output.innerHTML = str;
    
    }
    &#13;
    textarea {
      width: 100%;
    }
    &#13;
    <textarea name="comment">Lorem ipsum dolor https://www.youtube.com/embed/mr7FXvTSYpA lorem ipsum dolor</textarea>
    
    <div class="output"></div>
    &#13;
    &#13;
    &#13;