Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 31 July 2018

Facebook gets leave to appeal to Ireland’s Supreme Court after failing to block data transfer referral to CJEU

Facebook has been given the go ahead to appeal to Ireland’s Supreme Court against an earlier High Court decision to refer key questions relating to the validity of EU-US data flows to Europe’s top court, the Irish Times reports.

The eventual outcome of what is already years of legal to-ing and fro-ing — in a case that’s colloquially referred to as ‘Schrems II’ — could have major implications for the thousands of companies that rely on transferring EU citizens’ personal data to the US for processing.

The case was originally lodged with the Irish Data Protection Commission by European privacy campaigner, Max Schrems — as a complaint over the legality of Facebook’s use of Standard Contractual Clauses (SCCs) for transferring EU citizens’ data. Although it was Ireland’s DPC that took the decision to go to court — seeking a definitive ruling on the legality of the data transfer mechanism.

The High Court then added its concerns about another mechanism: The EU-US Privacy Shield.

Facebook is disputing the court’s earlier findings, including of “mass indiscriminate processing” of data by U.S. government agencies — under the PRISM and Upstream data harvesting programs (details of which were made public in documents released in 2013, by NSA whistleblower Edward Snowden).

In May, Facebook was denied a stay against the CJEU referral by the High Court. So the decision by the Supreme Court to hear its appeal sidesteps that earlier block — albeit, the referral to the CJEU stands, and has neither been blocked nor revoked by today’s decision.

However, if the Supreme Court hears Facebook’s appeal before the end of the year — as slated — that’s likely to be before the CJEU delivers its verdict on the referred questions. So there’s at least a possibility that the outcome of the Irish appeal could feed into the CJEU judgment, i.e. when Europe’s supreme court conducts its own assessment of the validity of EU-US data transfer mechanisms.

Equally, there’s no guarantee that Facebook’s arguments will persuade Ireland’s Supreme Court judges there was anything wrong with the High Court’s findings of fact in the first place.

The company’s decision to ask the Supreme Court to hear its appeal against the High Court’s CJEU referral lacks precedent in Ireland — so the company is challenging local case law.

The Irish Times reports that the judges rejected arguments made by the DPC and Schrems against the appeal, deeming it “at least arguable” that Facebook could persuade the court that at least some of the facts under challenge should be reversed.

According to the newspaper, the court granted Facebook leave to appeal on all eleven grounds which its lawyers had presented.

It was also eleven questions that the High Court referred to the CJEU in April — seeking guidance on a range of fine-grained points around whether rights afforded to EU citizens are being adequately protected by the current data transfer mechanisms and regimes, including Privacy Shield and SCCs; how to determine which rules and regulations take precedence across borders and/or where legal priorities clash and overlap; and whether, in cases of rights violations caused by surveillance law, data protection authorities have to suspend data flows or whether they can use discretion to not do so.

The case is based on an even earlier (2013) complaint by Schrems, related to US surveillance law, when he challenged Facebook (and other tech giants) over how user data they held was accessed by US intelligence agencies under US government mass surveillance programs — arguing such bulk access contravenes Europeans’ fundamental privacy rights.

The result, in 2015, was a landmark CJEU judgement which struck down a long-standing EU-US data transfer mechanism (called Safe Harbor).

The European Commission has since negotiated an updated replacement mechanism (aka: The EU-US Privacy Shield) — which is now used by more than 3,400 companies to simplify the process of authorizing transfers of EU citizens’ personal data to the US.

However this replacement is under increasing attack at home, with European MEPs angry at decisions taken by the current US administration which they see as counter to the spirit of the agreement and/or risking undermining actual protections agreed by EU and US negotiators during the Obama presidency.

US lawmakers’ continued backing for warrantless surveillance is one example — when the hope in Europe had rather been for reform of Section 702 of FISA, not the six-year renewal that Trump signed off on.

The Trump administration has also failed to fully enact certain aspects of the Privacy Shield arrangement (two years on from launch there’s still no permanent appointment to an ombudsperson role intended to handle EU citizens’ complaints, for example).

And in June the EU Parliament’s LIBE committee called for Privacy Shield to be suspended by September 1 unless the US comes into full compliance. Earlier this month the EU parliament also adopted a resolution calling for the suspension of the EU-US Privacy Shield.

The annual review of the Privacy Shield mechanism is due to take place in October — so the Commission really needs to eke out some substantial concessions from US counterparts or face further political heat in its own backyard.

Aside from the CJEU, the Commission is the only EU institution with the power to suspend Privacy Shield, although the executive body has shown no appetite for that. Rather its priorities align with ensuring ‘business as usual’ — at least where all important data flows are concerned — vs taking a principled stance in defense of EU citizens’ fundamental rights. For that, Europeans typically have to look to the courts. Or, sometimes, the parliament.

The Irish Times reports that Facebook’s grounds for appeal to the Supreme Court in the Schrems II case include the necessity of the High Court making a reference in light of Privacy Shield — with the company arguing the court is bound by the finding on US law contained within the Privacy Shield decision. (A decision that was, however, made by the Commission, not by an EU court…)

It also argues that the High Court should have taken into account the effect of the introduction of the EU’s General Data Protection Regulation on the legal context which will operate when the CJEU comes to consider the reference — with the referral taking place prior to GDPR coming into force on May 25.

The company is also claiming the court made several errors in its assessment of US law — including in its finding of “mass indiscriminate” processing; and that US laws and practices did not provide EU citizens with an effective remedy, as required under the EU’s Charter of Fundamental Rights, for breach of data privacy rights.

We’ve reached out to Facebook for comment on the appeal.



from TechCrunch https://ift.tt/2mWXAnF
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support