aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib
diff options
context:
space:
mode:
authorKevin Serrano <kevgagser@gmail.com>2017-08-03 07:20:53 +0800
committerGitHub <noreply@github.com>2017-08-03 07:20:53 +0800
commit2c37d438885865fb9b93769a6dee9fb32f8d82aa (patch)
tree19ed66e8fd54b4324d8e5750de061c6562ace19b /app/scripts/lib
parentd15e402ed87bf7533250c49a7972a7b1a12c99c2 (diff)
parent8c6f01b91094564df59d6d95b6f43b811e711824 (diff)
downloadtangerine-wallet-browser-2c37d438885865fb9b93769a6dee9fb32f8d82aa.tar
tangerine-wallet-browser-2c37d438885865fb9b93769a6dee9fb32f8d82aa.tar.gz
tangerine-wallet-browser-2c37d438885865fb9b93769a6dee9fb32f8d82aa.tar.bz2
tangerine-wallet-browser-2c37d438885865fb9b93769a6dee9fb32f8d82aa.tar.lz
tangerine-wallet-browser-2c37d438885865fb9b93769a6dee9fb32f8d82aa.tar.xz
tangerine-wallet-browser-2c37d438885865fb9b93769a6dee9fb32f8d82aa.tar.zst
tangerine-wallet-browser-2c37d438885865fb9b93769a6dee9fb32f8d82aa.zip
Merge pull request #1849 from MetaMask/blacklist-refactor
Blacklist refactor
Diffstat (limited to 'app/scripts/lib')
-rw-r--r--app/scripts/lib/inpage-provider.js3
-rw-r--r--app/scripts/lib/is-phish.js29
-rw-r--r--app/scripts/lib/obj-multiplex.js16
3 files changed, 20 insertions, 28 deletions
diff --git a/app/scripts/lib/inpage-provider.js b/app/scripts/lib/inpage-provider.js
index 8b8623974..fd032a673 100644
--- a/app/scripts/lib/inpage-provider.js
+++ b/app/scripts/lib/inpage-provider.js
@@ -26,6 +26,9 @@ function MetamaskInpageProvider (connectionStream) {
(err) => logStreamDisconnectWarning('MetaMask PublicConfigStore', err)
)
+ // ignore phishing warning message (handled elsewhere)
+ multiStream.ignoreStream('phishing')
+
// connect to async provider
const asyncProvider = self.asyncProvider = new StreamProvider()
pipe(
diff --git a/app/scripts/lib/is-phish.js b/app/scripts/lib/is-phish.js
index 68c09e4ac..ce51c353d 100644
--- a/app/scripts/lib/is-phish.js
+++ b/app/scripts/lib/is-phish.js
@@ -1,38 +1,23 @@
const levenshtein = require('fast-levenshtein')
-const blacklistedMetaMaskDomains = ['metamask.com']
-let blacklistedDomains = require('etheraddresslookup/blacklists/domains.json').concat(blacklistedMetaMaskDomains)
-const whitelistedMetaMaskDomains = ['metamask.io', 'www.metamask.io']
-const whitelistedDomains = require('etheraddresslookup/whitelists/domains.json').concat(whitelistedMetaMaskDomains)
const LEVENSHTEIN_TOLERANCE = 4
-const LEVENSHTEIN_CHECKS = ['myetherwallet', 'myetheroll', 'ledgerwallet', 'metamask']
-
// credit to @sogoiii and @409H for their help!
// Return a boolean on whether or not a phish is detected.
-function isPhish({ hostname, updatedBlacklist = null }) {
- var strCurrentTab = hostname
+function isPhish({ hostname, blacklist, whitelist, fuzzylist }) {
// check if the domain is part of the whitelist.
- if (whitelistedDomains && whitelistedDomains.includes(strCurrentTab)) { return false }
-
- // Allow updating of blacklist:
- if (updatedBlacklist) {
- blacklistedDomains = blacklistedDomains.concat(updatedBlacklist)
- }
+ if (whitelist && whitelist.includes(hostname)) return false
// check if the domain is part of the blacklist.
- const isBlacklisted = blacklistedDomains && blacklistedDomains.includes(strCurrentTab)
+ if (blacklist && blacklist.includes(hostname)) return true
// check for similar values.
- let levenshteinMatched = false
- var levenshteinForm = strCurrentTab.replace(/\./g, '')
- LEVENSHTEIN_CHECKS.forEach((element) => {
- if (levenshtein.get(element, levenshteinForm) <= LEVENSHTEIN_TOLERANCE) {
- levenshteinMatched = true
- }
+ const levenshteinForm = hostname.replace(/\./g, '')
+ const levenshteinMatched = fuzzylist.some((element) => {
+ return levenshtein.get(element, levenshteinForm) <= LEVENSHTEIN_TOLERANCE
})
- return isBlacklisted || levenshteinMatched
+ return levenshteinMatched
}
module.exports = isPhish
diff --git a/app/scripts/lib/obj-multiplex.js b/app/scripts/lib/obj-multiplex.js
index bd114c394..0034febe0 100644
--- a/app/scripts/lib/obj-multiplex.js
+++ b/app/scripts/lib/obj-multiplex.js
@@ -5,12 +5,16 @@ module.exports = ObjectMultiplex
function ObjectMultiplex (opts) {
opts = opts || {}
// create multiplexer
- var mx = through.obj(function (chunk, enc, cb) {
- var name = chunk.name
- var data = chunk.data
- var substream = mx.streams[name]
+ const mx = through.obj(function (chunk, enc, cb) {
+ const name = chunk.name
+ const data = chunk.data
+ if (!name) {
+ console.warn(`ObjectMultiplex - Malformed chunk without name "${chunk}"`)
+ return cb()
+ }
+ const substream = mx.streams[name]
if (!substream) {
- console.warn(`orphaned data for stream "${name}"`)
+ console.warn(`ObjectMultiplex - orphaned data for stream "${name}"`)
} else {
if (substream.push) substream.push(data)
}
@@ -19,7 +23,7 @@ function ObjectMultiplex (opts) {
mx.streams = {}
// create substreams
mx.createStream = function (name) {
- var substream = mx.streams[name] = through.obj(function (chunk, enc, cb) {
+ const substream = mx.streams[name] = through.obj(function (chunk, enc, cb) {
mx.push({
name: name,
data: chunk,