urisanity
Version:
vet URIs in web and web-like applications with confidence
7 lines (6 loc) • 5.76 kB
JavaScript
/*!
* URISanity: Date=Tue Feb 15 2022 20:40:18 GMT+0100 (West Africa Standard Time);NodeBuildVersion=14
*
*/
!function(a,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(a=a||self).urisanity=t()}(this,(function(){"use strict";var a=/^([^\w]*)(javascript|vbscript|app|admin|icloud-sharing|icloud-vetting|file|help|aim|facetime-audio|applefeedback|ibooks|macappstore|udoc|ts|st|x-apple-helpbasic|(?:x\-)?radar)/im,t=/^(?:(?:f|ht)tps?|cid|xmpp|mms|webcal|aaa|acap|bolo|data|blob|wss?|irc|udp)/im,e=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/?)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\)){0,}(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s\!()\[\]{};:\'\"\.\,<>?«»“”‘’]){0,})/i,r=/^(whatsapp|zoommtg|slack|mailto|tel|callto|sms|skype)/im,i=/^(jdbc(:sqlserver|:mysql|:mariadb|:sqlite)?|odbc|postgres(ql)?|mongodb)/im,n=/^(view-source|moz-extension|chrome-extension)/im,s=/^(cloudinary|gs|s3|grpc)/im,o=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,d=/^(?:data:([\w-.]+\/[\w-.]+(\+[\w-.]+)?)?(;[\w-.]+=[\w-.]+)*;base64,([a-zA-Z0-9\/+\n=]+))$/,c=/^(?:vb|java)script:/i,l=/^(?:(blob:)?https?|wss?|about)/im,f=[".","/"],u="undefined"==typeof self?global||{}:self,p=u.process||{versions:{node:"."},env:{}},m=parseInt(p.versions.node.split(".")[0]);m<=12&&(u.URL||(u.URL=function(a){var t=require("url"),e=m<=11?t.parse(a):t.URL(a);return Object.assign({},e,{hostname:e.host})}));var v,h=void 0!==(v=u.navigator)&&null===v.product.match(/^(ReactNative|NativeScript|NS)$/i)?u.location.origin:(u.constants||p.env).ORIGIN;function w(a){return"string"==typeof a&&f.indexOf(a.charAt(0))>-1}function b(a){var t=void 0,e=void 0,r=void 0,i=void 0,n=void 0;i={};var s=a instanceof u.FormData?a.entries():new u.FormData(a).entries();try{for(;null!==(e=s.next().value);)r=e[0],n=e[1],Object.prototype.hasOwnProperty.call(i,r)?(t=i[r],Array.isArray(t)||(t=i[r]=[t]),t.push(n)):i[r]=n}catch(a){i=Object.fromEntries(s)}return JSON.stringify(i)}function F(f){var p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!f||null!==f.match(/:\/\/(?:[#$@=*.!]|[/]){0,}$/)||f.includes("////////////"))return"about:blank";var m=f.replace(o,"").trim();if(w(m)){var v=m.startsWith("/")?h+m:h+"/"+m;m=e.test(v)?v:"//"}var b=m.match(t)||m.match(r)||m.match(i)||m.match(n),F=(b=null!==b?b:[])[0]||"",g=new u.URL(m.toLowerCase()),A=g.hostname,y=g.pathname,L=g.search,O=g.hash;if(/^(?:((?:www|[a-z]{1,11})\.)(?!\1)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63}))$/i.test(A)||/^(((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/.test(A)||/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/.test(A)||/^(?:((?:[a-z0-9-._~]{0,}|%[1-9a-f]?[0-9a-f]|[!$&'()*+,;=])|\:|\@)*)/i.test(y)||/^((?:[a-z0-9-._~]{0,}|%[1-9a-f]?[0-9a-f]|[!$&'()*+,;=])|\:|\@|\/|\?)*$/i.test(L)||/^((?:[a-z0-9-._~]{0,}|%[1-9a-f]?[0-9a-f]|[!$&'()*+,;=])|\:|\@|\/|\?)*$/i.test(O)){if(A.includes(".00"))return"about:blank";if(null!==L.toLowerCase().match(/%3c(?=\/)?/g)&&L.toLowerCase().includes("%3e")&&L.toLowerCase().includes("%3f")&&L.toLowerCase().includes("%3d")&&L.toLowerCase().includes("%27")&&L.toLowerCase().includes("%22")&&null!==L.toLowerCase().match(/\.(?:jar|dmg|exe|bin|sh|sed)/g))return"about:blank"}if(!a.test(F)||e.test(m)){var R=!1;return p.allowScriptOrDataURI&&null===F.match(/^(java|vb)script|data/)&&(d.test(m)||c.test(m))&&(R=!0),p.allowCommsAppURI&&r.test(m)&&(R=!0),p.allowDBConnectionStringURI&&i.test(m)&&(R=!0),p.allowServiceAPIURI&&s.test(m)&&(R=!0),p.allowBrowserSpecificURI&&n.test(m)&&(R=!0),p.allowWebTransportURI&&l.test(m)&&(R=!0),""!==F&&R?m:"about:blank"}}var g={isSameOrigin:function(a){if(a){var t=new u.URL(a);return h===t.origin}},extractParamValueFromUri:function(a,t){if(a){var e=new RegExp("[\\?&#]"+t+"=([^&#]*)").exec(a);return null!=e?unescape(e[1]):void 0}},checkParamsOverWhiteList:function(a){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=new u.URL(a),i=[],n=[],s=null;try{var o="";if("FormData"in u&&e instanceof u.FormData)if("function"==typeof Object.fromEntries)o=b(e);else{var d={};e.forEach((function(a,t){d[t]=a})),o=JSON.stringify(d)}else o=e;"string"==typeof o&&(s=JSON.parse(o))}catch(a){s=e}return""===s?r.searchParams.forEach((function(){for(var a=arguments.length,t=Array(a),e=0;e<a;e++)t[e]=arguments[e];var r=t[0],s=t[1];n.push(unescape(r)),i.push(s)})):s instanceof Object&&n.concat(Object.values(s)),i.length===t.length},vet:function(a){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return F(a,t||{})}};return g}));
//# sourceMappingURL=urisanity.min.js.map