add some protection against opener attacks if external site is opened via window.open()

This commit is contained in:
Andrew Dolgov 2017-02-08 15:07:05 +03:00
parent 23c8ef7e36
commit 829d478f1b
3 changed files with 16 additions and 5 deletions

View File

@ -1957,7 +1957,7 @@
# $entry .= " <a target=\"_blank\" href=\"" . htmlspecialchars($url) . "\">" .
# $filename . " (" . $ctype . ")" . "</a>";
$entry = "<div onclick=\"window.open('".htmlspecialchars($url)."')\"
$entry = "<div onclick=\"openUrlPopup('".htmlspecialchars($url)."')\"
dojoType=\"dijit.MenuItem\">$filename ($ctype)</div>";
array_push($entries_html, $entry);
@ -2038,7 +2038,7 @@
else
$filename = "";
$rv .= "<div onclick='window.open(\"".htmlspecialchars($entry["url"])."\")'
$rv .= "<div onclick='openUrlPopup(\"".htmlspecialchars($entry["url"])."\")'
dojoType=\"dijit.MenuItem\">".$filename . $title."</div>";
};

View File

@ -2064,9 +2064,17 @@ function getSelectionText() {
return text.stripTags();
}
function openUrlPopup(url) {
var w = window.open("");
w.opener = null;
w.location = url;
}
function openArticlePopup(id) {
window.open("backend.php?op=article&method=view&mode=raw&html=1&zoom=1&id=" + id +
"&csrf_token=" + getInitParam("csrf_token"),
var w = window.open("",
"ttrss_article_popup",
"height=900,width=900,resizable=yes,status=no,location=no,menubar=no,directories=no,scrollbars=yes,toolbar=no");
w.opener = null;
w.location = "backend.php?op=article&method=view&mode=raw&html=1&zoom=1&id=" + id + "&csrf_token=" + getInitParam("csrf_token");
}

View File

@ -1729,7 +1729,10 @@ function hlClicked(event, id) {
function openArticleInNewWindow(id) {
toggleUnread(id, 0, false);
window.open("backend.php?op=article&method=redirect&id=" + id);
var w = window.open("");
w.opener = null;
w.location = "backend.php?op=article&method=redirect&id=" + id;
}
function isCdmMode() {