使链接不安全

时间:2012-02-02 05:00:25

标签: javascript jquery url hyperlink anchor

我有一个JavaScript链接,如下所示:

<a href="#" onclick="window.open('TrackPackage.asp?track=235&ship=OTHER&ShippingMethod=1', '', 'location=1,menubar=1,scrollbars=1,status=1,resizable=1,width=635,height=460'); return false;">
<span class="PageText_L288n">TRACK YOUR PACKAGE</span>
</a>

但是,它是从安全页面链接的,因此它成为一个安全的页面。不幸的是,这给我带来了问题,因为当他们到达页面时会自动提交不安全的表单。他们得到提示:此表单不安全地提交。这些页面上没有任何敏感数据,所以我真的不需要首先保护页面。是否存在可能使链接不安全的HTML或JavaScript属性。我无法真正修改链接本身,因为它是一个动态链接。

但是,我相信一些jQuery可以在http://www.example.com/之前添加TrackPackage.asp。我想这是可以接受的,但我更喜欢某种属性,只会使链接不安全。感谢

3 个答案:

答案 0 :(得分:0)

如果你在window.open中使用之前动态接收.asp页面,你可以只用一个字符串替换来替换URL中的“http”协议“https”,或者如果有任何协议,添加if的开头是“http”。

我没有尝试过这个,因为我没有https页面可以玩,但我认为它可以工作。

答案 1 :(得分:0)

您可能会尝试覆盖原生函数。但是在某些浏览器中可能无效(没有找到这样的浏览器,所以假设它适用于所有浏览器,至少是主要的浏览器:)):

var windowOpen = window.open;
window.open = function(url, name, settings) {
    var url = 'http://www.example.com/' + url;
    alert("New url = " + url);
    windowOpen(url, name, settings);  
}

如果你想对选定的链接类进行操作,那么你可以这样做(将onclick属性修改为文本字符串的想法不是最好的)

<script>
var windowOpen = window.open, clicked = false;
window.open = function(url, name, settings) {
    if (clicked) var url = 'http://www.example.com/' + url;
    alert("New url = " + url);
    windowOpen(url, name, settings);  
}
$(document).ready(function(){
   $('span.packagetracklink').click(function(){
        clicked = true;
        setTimeout(function(){clicked = false;}, 200);  
   });
});
</script>
<a href="#" onclick="window.open('some_url', '', ''); return false;">
<span class="packagetracklink">TRACK YOUR PACKAGE</span>
</a><br>
<a href="#" onclick="window.open('some_url', '', ''); return false;">
<span class="another_class">TRACK YOUR PACKAGE</span>
</a>

答案 2 :(得分:0)

您需要以某种方式首先获取该A标记的实例。它没有ID或CLASS,所以你自己就在那里(除非你粘贴父元素代码和兄弟代码,至少是片段。

var link = $("a"); // I don't have enough info to tell you how to precisely get this instance
var originalOnClick = link.attr("onclick");
var part1 = "window.open('"; // this is always the same, right?
var part2 = originalOnClick.substr(part1.length); // the remainder, beginning with TrackPackage.asp
var newOnClick = part1 + "http://www.example.com/" + part2;

link.attr("onclick", newOnClick);

还有其他方法可以将字符串常量注入到现有字符串中,但这应该可行 - 如果我理解得足够好。