Scan your site now

Security Report Summary
E
Site:
Scanned Site(s):
1
IP Address:
104.16.122.127
Report Time:
28 Sep 2020 05:33:26 UTC
Checks:
Window Referrer
Window Opener
Comments
Enabled Debugging
Unsafe Functions
Warning:
Please have a look at the security issues / warnings in the report.
Security Issues
Window Referrer
  • window.open("".concat(Object(oe.mc)(n,k),"?type=highlight&text=").concat(c),"_blank"),q.event("post.shareOpen",{postId:k,source:"highlight_menu",dest:"twitter",dialogType:"native"})}({isYourHighlight:s,createQuote:t,viewer:i})}})})))),(!l||t)&&u.createElement("div",{className:e(de)})),!l&&u.createElement(Q.a,{display:"inline-block",padding:"0 16px"},u.createElement(U.a,{color:"DARKER",scale:"S"},N||"")),l&&t&&u.createElement("div",{className:e(de)})&&u.createElement(Q.a,{display:"inline-block",padding:"0 16px"},u.createElement(fe,{action:"privateNote",viewer:i,actionHandler:r})))))}))})))}))})),ge=c()(ce()),he=c()(se()),be=Object(v.c)((function(e){return{authDomain:e.config.authDomain}}))(me),ve=n("./src/styles/zIndex.ts");[https://cdn-client.medium.com/lite/static/js/AMPPost~CollectionHomepage~CollectionHomepagePreview~CollectionNewShortformEditor~CollectionPostShor~250d4f3e.f0c4d8cc.chunk.js]
  • window.open(t,"LIP","resizable,scrollbars,status,top=".concat(e,",left=").concat(n,",height=").concat(560,",width=").concat(500)):window.open(t)}}switch(i){case"LINK_DISABLED":return m.createElement(f.z,{darkTheme:!0,popoverRenderFn:function(){return m.createElement(f.a,{padding:"8px",whiteSpace:"nowrap"},"This feature is temporarily disabled.")},placement:"top",targetDistance:15},m.createElement(ne,{buttonStyle:i,socialPlatform:s}));[https://cdn-client.medium.com/lite/static/js/UserProfile.df3a3ce6.chunk.js]
Warnings
Comments
Comments should be removed from the public code of a web application, since it can give an aggressor critical insights into the inner structure of the program. By using this information, the attacker could easier understand how the user session is handled by javascript or figure out the pathway data is sent to the server.
  • /* Extra small devices (phones, 728px and down) */[https://cdn.optimizely.com/js/16180790160.js]
  • /* Small devices (portrait tablets and large phones, 728px and up) */[https://cdn.optimizely.com/js/16180790160.js]
  • /* Medium devices (landscape tablets, 904px and up) */[https://cdn.optimizely.com/js/16180790160.js]
  • /* Extra large devices (laptops and desktops, 1080px and up) */[https://cdn.optimizely.com/js/16180790160.js]
  • /** * Sample JavaScript Condition * This function is called after the page is triggered. It should return true * when the page is ready to activate. */[https://cdn.optimizely.com/js/16180790160.js]
  • /** * Sample Polling Function * Supply an expression to return a boolean inside a function. * For complete documentation, see https://developers.optimizely.com/x/solutions/javascript/topics/dynamic-websites/index.html#polling */[https://cdn.optimizely.com/js/16180790160.js]
  • /** * Sample JavaScript Condition * This function is called after the page is triggered. It should return true * when the page is ready to activate. */[https://cdn.optimizely.com/js/16180790160.js]
  • /*if (window.location.href.indexOf("medium.com/membership") > -1) { document.getElementById('membership-page-testimonials-section').style.opacity = 0; document.getElementById('membership-content-section').style.opacity = 0; document.getElementById('membership-intro-section').style.opacity = 0; setTimeout(function() { document.getElementById('membership-intro-section').style.opacity = 1; document.getElementById('membership-content-section').style.opacity = 1; document.getElementById('membership-page-testimonials-section').style.opacity = 1; }, 1400);}*/[https://cdn.optimizely.com/js/16180790160.js]
  • /*! * @overview es6-promise - a tiny implementation of Promises/A+. * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) * @license Licensed under MIT license * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE * @version 4.1.0 */[https://cdn.optimizely.com/js/16180790160.js]
  • /** @license React v16.9.0 * react-dom-server.browser.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */[https://cdn-client.medium.com/lite/static/js/vendors~main.f6f30451.chunk.js]
  • /** @license React v16.9.0 * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */[https://cdn-client.medium.com/lite/static/js/vendors~main.f6f30451.chunk.js]
Enabled Debugging
The JavaScript debugging functions should always removed after development stage, because they could expose informations on the inner workings of the code. In production, it is a loophole and could show a possible attacker where to find possibly exploitable vulnerabilities or interesting variables.
  • console.log('[Optimizely Callback Activation] Topic - ' + _dataObject);[https://cdn.optimizely.com/js/16180790160.js]
  • console.log('[Optimizely Callback Activation] Publication - ' + _dataObject);[https://cdn.optimizely.com/js/16180790160.js]
  • console.log('[Optimizely Callback Activation] Publication - ' + _dataObject);[https://cdn.optimizely.com/js/16180790160.js]
  • console.log('[Optimizely Callback Activation] Publication - ' + _dataObject);[https://cdn.optimizely.com/js/16180790160.js]
  • console.log(e)}}}),(function(e,t,n){function i(){s();[https://cdn.optimizely.com/js/16180790160.js]
  • console.log(e))}},i.prototype.debug=function(){this.z(s.LogLevel.DEBUG,[].slice.call(arguments))},i.prototype.log=function(){this.z(s.LogLevel.INFO,[].slice.call(arguments))},i.prototype.logAlways=function(){var e=this.j([].slice.call(arguments));[https://cdn.optimizely.com/js/16180790160.js]
  • console.log(n,r):console.log(n)}}}}]),t}();[https://cdn-client.medium.com/lite/static/js/vendors~instrumentation.9166695a.chunk.js]
Unsafe Functions
eval() is eval! This functions and similar ones (document.write(), document.writeln(), element.innerHTML, element.outerHTML, element.insertAdjacentHTML()) should never be used in production stage of a website, because the parsing of the executable string is often not secure and result therefore often in a cross-site scripting vulnerability. Instead of these functions create html elements by script and add it to the DOM object.
  • eval(str)}catch(e){throw Logger.warn("Error executing JS:",str,e),new ExecError(e)}}}),(function(e,t,n){var i=n(2),r=n(85),a=n(25),o=n(26),s=n(81).LocalStorage,c=n(23),u=n(90),l=n(16),d=l.get("stores/pending_events"),f=a.StorageKeys.PENDING_EVENTS;t.persistPendingEvents=function(){try{var e=d.getEventsString();[https://cdn.optimizely.com/js/16180790160.js]
  • eval(t.value))}catch(e){return!1}return!1}}),(function(e,t,n){e.exports=function(e){e.registerVisitorProfileProvider(n(180));[https://cdn.optimizely.com/js/16180790160.js]
  • document.write(e)},t.appendToHead=function(e){return t.appendTo(document.head,e)},t.appendTo=function(e,t){e.appendChild(t)},t.addEventListener=function(e,t,n){return document.addEventListener(e,t,n),function(){document.removeEventListener(e,t,n)}},t.getCurrentScript=function(){if(document.currentScript)return document.currentScript},t.parentElement=function(e){for(var t=e.parentNode;t.nodeType!==Node.ELEMENT_NODE;)t=t.parentNode;return t}}),(function(e,t,n){var i,r,a="optimizely_data",o=n(76).create,s=n(82),c=n(40),u=t.Error=o("StorageError");[https://cdn.optimizely.com/js/16180790160.js]
  • insertAdjacentHTML(n,this.change.value),e.setAttribute(t,""),u.setData(e,this.change.id,this.identifier,[]);[https://cdn.optimizely.com/js/16180790160.js]
Additional Information
Link Opener
The window.open("https://example.com/", "_blanc", "noopener"); attribute should always be added to the window.open() function, which open a site in a new tab, to reduce the risk of reverse tabnabbing. Otherwise javascript on the new page has full control over the previous visited page, including permission to change the DOM object and possibly steal session cookies.
Link Referrer
The window.open("https://example.com/", "_blanc", "referrer"); attribute should always be added to the window.open() function to prevent reverse tabnabbing for older browser, which do not support the noopener attribute and to prevent phishing attacks.
Comments
Comments should be removed from the public code of a web application, since it can give an aggressor critical insights into the inner structure of the program. By using this information, the attacker could easier understand how the user session is handled by javascript or figure out the pathway data is sent to the server.
Enabled Debugging
The JavaScript debugging functions should always removed after development stage, because they could expose informations on the inner workings of the code. In production, it is a loophole and could show a possible attacker where to find possibly exploitable vulnerabilities or interesting variables.
Unsafe Functions
eval() is eval! This functions and similar ones (document.write(), document.writeln(), element.innerHTML, element.outerHTML, element.insertAdjacentHTML()) should never be used in production stage of a website, because the parsing of the executable string is often not secure and result therefore often in a cross-site scripting vulnerability. Instead of these functions create html elements by script and add it to the DOM object.
Scanned URL(s)
MARK – Medium