2011-12-14 247 views
0

我怎样才能让这个更安全,更安全:从标题窗口打开

  • 地带不安全的字符
  • 防止未定义的错误

到目前为止的代码:

// Open HREF in popup window 
$('.external').bind('click', function() { 
    var url = $(this).attr("href"); 
    var title = ($(this).attr("data-popup-title")) ? $(this).attr("data-popup-title") : $(this).attr("title"); 
    var image = $(this).attr("data-popup-image"); 
    var width = ($(this).attr("data-popup-width")) ? $(this).attr("data-popup-width") : '626'; 
    var height = ($(this).attr("data-popup-height")) ? $(this).attr("data-popup-height") : '436'; 
    window.open('http://www.facebook.com/sharer.php?s=100&p[title]=' + title + '&p[url]=' + url + '&&p[images][0]=' + image, 'sharer', 'toolbar=0,status=0,width='+width+',height='+height); 
    return false; 
}); 

也是最佳做法return false或使用preventDefault()

+2

这不是安全。在JavaScript中剥离标签中的数据没有什么安全的。如果有人设法将脚本注入链接的`title`属性,他们就有能力在处理程序出现之前执行该代码并打开一个弹出窗口。做你正在做的事实在没有意义。此外,请仅为每个问题发布一个问题。 – meagar 2011-12-14 21:06:23

回答

0

这不是最佳做法,preventDefault()return false不同的东西。返回false可防止事件冒泡通过其他处理程序,而preventDefault只会阻止在所有其他事件处理程序运行后发生默认的“单击”操作(通常在链接的href之后)。