2014-12-31 2 views
0

내 VanillaForums 포럼의 사용자가 https 프로토콜을 사용할지 여부를 선택하게하고 jQuery를 사용하여 클라이언트 측에서 이미지 소스를 변경할 수 있는지 테스트하려고합니다.안전하지 않은 이미지 소스 보안 클라이언트 측

나는 이미지를로드하기 전에이 코드는 // 대신 http:// 및 부하에 이미지 소스 링크에서 프로토콜을 변경하려면, 그래서 .ready() 사용 :

$(document).ready(function() { 
    if (window.location.protocol == "https:") {  
     var $imgs = $("img"); 
     $imgs.each(function() { 
      var img_src = $(this).prop("src"); 
      if (img_src.indexOf("http://") < 0) return; 
      var new_img_src = img_src.replace("http:", ""); 
      $(this).prop("src", new_img_src); 
     }); 
    } 
}); 

는 이미지를 변화시키는 작업을 수행하는 동안을

enter image description here

을 그리고 콘솔 http://someimageurl...이 확보되지 않는다는 경고를 표시합니다 : 소스, URL 표시 줄은 여전히이 문제를 보여줍니다.

코드를 페이지의 맨 위로 이동해야합니까, 그렇지 않으면 차이가 있습니까?

+0

'준비 완료'발생 전 이미지로드가 시작됩니까? 사용 된 프로토콜에 관계없이 교체 할 수 있습니다. 서버 측을 사용하지 않는 이유는 무엇입니까? – Halcyon

+1

서버에서 수정할 필요가있는 경고를 원하지 않는 경우 브라우저가 URL을 본 후 너무 늦었습니다 – charlietfl

+0

찰리 감사합니다. 문제 일 수 있다고 생각했습니다. – jonbaldie

답변

0

브라우저가 안전하지 않은 연결 경고를 표시하지 않도록 서버 측에서 수행해야합니다. 책임 코드가있는 파일은 /library/core/functions.render.php이며 here을 볼 수 있습니다.

$PhotoURL은 변경해야하는 변수입니다. 다음을 사용하면 모든 이미지가 https: 프로토콜 (str_replace('http://', 'https://', $PhotoURL))을 통해로드됩니다.

저는 보통 작은 소프트웨어에서는 글로벌 범위를 신경 쓰지 않지만 바닐라만큼 큰 것으로 건초 더미에서 바늘을 찾는 것과 같습니다.

바닐라에 대한 다른 수정 사항을 찾을 수 없어서 사람들에게 도움이되기를 바랍니다.

관련 문제