rugk 7 лет назад
Родитель
Сommit
ba3efefc7b
1 измененных файлов с 65 добавлено и 0 удалено
  1. 65 0
      js/privatebin.js

+ 65 - 0
js/privatebin.js

@@ -4436,6 +4436,7 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
             TopNav.init();
             TopNav.init();
             UiHelper.init();
             UiHelper.init();
             Uploader.init();
             Uploader.init();
+            InitialCheck.init();
 
 
             // check whether existing paste needs to be shown
             // check whether existing paste needs to be shown
             try {
             try {
@@ -4465,6 +4466,70 @@ jQuery.PrivateBin = (function($, sjcl, Base64, RawDeflate) {
         return me;
         return me;
     })(window, document);
     })(window, document);
 
 
+
+    /**
+     * initial (security) check
+     *
+     * @name   InitialCheck
+     * @param  {object} window
+     * @param  {object} document
+     * @class
+     */
+    var InitialCheck = (function (window, document) {
+        var me = {};
+
+        /**
+         * check if the connection is insecure
+         *
+         * @private
+         * @name   InitialCheck.isInsecureConnection
+         * @function
+         */
+        function isInsecureConnection()
+        {
+            const url = new URL(document.URL);
+
+            // HTTP is obviously insecure
+            if (url.protocol !== 'http:') {
+                return false;
+            }
+
+            // filter out actually secure connections over HTTP
+            if (
+                url.hostname.endsWith('.onion') ||
+                url.hostname.endsWith('.i2p')
+            ) {
+                return false;
+            }
+
+            // whitelist localhost for development
+            if (
+                url.hostname === 'localhost' ||
+                url.hostname === '127.0.0.1'
+            ) {
+                return false;
+            }
+
+            // totally INSECURE http protocol!
+            return true;
+        }
+
+        /**
+         * init on application start
+         *
+         * @name   InitialCheck.init
+         * @function
+         */
+        me.init = function()
+        {
+            if (isInsecureConnection()) {
+                Alert.showError('This instance is using an insecure connection! Please only use this for testing.');
+            }
+        }
+
+        return me;
+    })(window, document);
+
     return {
     return {
         Helper: Helper,
         Helper: Helper,
         I18n: I18n,
         I18n: I18n,