summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/api.php5
-rw-r--r--include/functions2.php19
2 files changed, 22 insertions, 2 deletions
diff --git a/classes/api.php b/classes/api.php
index 730e20ab9..b9b1a7aa3 100644
--- a/classes/api.php
+++ b/classes/api.php
@@ -2,7 +2,7 @@
class API extends Handler {
- const API_LEVEL = 9;
+ const API_LEVEL = 10;
const STATUS_OK = 0;
const STATUS_ERR = 1;
@@ -201,6 +201,9 @@ class API extends Handler {
$sanitize_content = !isset($_REQUEST["sanitize"]) ||
sql_bool_to_bool($_REQUEST["sanitize"]);
$force_update = sql_bool_to_bool($_REQUEST["force_update"]);
+ $has_sandbox = sql_bool_to_bool($_REQUEST["has_sandbox"]);
+
+ $_SESSION['hasSandbox'] = $has_sandbox;
$override_order = false;
switch ($_REQUEST["order_by"]) {
diff --git a/include/functions2.php b/include/functions2.php
index 672373e6d..866c92ec9 100644
--- a/include/functions2.php
+++ b/include/functions2.php
@@ -826,6 +826,21 @@
}
+ function iframe_whitelisted($entry) {
+ $whitelist = array("youtube.com", "youtu.be", "vimeo.com");
+
+ @$src = parse_url($entry->getAttribute("src"), PHP_URL_HOST);
+
+ if ($src) {
+ foreach ($whitelist as $w) {
+ if ($src == $w || $src == "www.$w")
+ return true;
+ }
+ }
+
+ return false;
+ }
+
function sanitize($str, $force_remove_images = false, $owner = false, $site_url = false, $highlight_words = false, $article_id = false) {
if (!$owner) $owner = $_SESSION["uid"];
@@ -894,7 +909,9 @@
$entries = $xpath->query('//iframe');
foreach ($entries as $entry) {
- $entry->setAttribute('sandbox', 'allow-scripts');
+ if (!iframe_whitelisted($entry)) {
+ $entry->setAttribute('sandbox', 'allow-scripts');
+ }
}