From 63e14e308703c458584934a156876e00e8277cf9 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 12:41:49 -0800 Subject: [PATCH 01/11] Readme --- README.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aa9660d..2b78a88 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,26 @@ -# security-checklist -A checklist for staying safe on the internet +# Security checklist +A checklist for staying safe on the internet. + +### Motivation +This project is the result of a conversation started during a [recent episode](https://spec.fm/podcasts/design-details/249464) of the [Design Details Podcast](https://spec.fm/podcasts/design-details/) and a subsequent tweet by [Michael Knepprath](https://twitter.com/mknepprath/status/1083966912420372481). + +### Contributing +This project should be considered a living document of resources and applications that improve people's digital security and privacy. Contributions, edits, and extensions are welcome! + +If you have resources to add to existing sections, please open a pull request. + +- Aim for reputable sources for guides and new coverage +- If adding an app, please include links to as many platforms as possible. See `config/*.js` for examples of how data is formatted. + +If you would like to create a new category of security and privacy resources, please open an issue first with your proposed category. Please explain why this additional category should stand alone from other existing sections. + +### Run this locally +1. `$ git clone git@github.com:brianlovin/security-checklist.git` +2. `$ cd security-checklist` +3. `$ npm install` +4. `$ npm run dev` +5. View the running app in your browser at `http://localhost:3000` +6. Optional: deploy this yourself with ZEIT + Now by configuring `now.json` and running `$ now` + +### Feedback +Please open issues at any time for general feedback, or you can reach me directly at hi@brianlovin.com. \ No newline at end of file From 276ea5790cc5ebd700a4ffead2c7c5305d96bcfa Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 12:49:27 -0800 Subject: [PATCH 02/11] Better og image for shares --- static/og-image.png | Bin 27381 -> 23428 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/og-image.png b/static/og-image.png index 0b6f638e4175c10579e9cfd83ea9498ef7aaf33e..fe224b3e821cebb86dd12b661b57f5b94d61cbda 100644 GIT binary patch literal 23428 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

1*sePl*N^=HLgtT$Bv{3@1jI6 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 literal 27381 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'D$YYYBe@p(g|0P_5phc2GfS zS%F6cJmk#_e!+qG=x4_wOC2#C*V#-VWIzq57oR^u9A&pideYP9ra-1ENNwIEpKo?a6kX1 z1$`rXt?=1V*-yB_=q)ui^iL)2y#tmsakD(gDXIz9()?ahU&6Nc`Eu)@-r`+-Wd@zT z^3w9yP3O1XJUf%83n~U_R2KV{ig2gf>hACHR3(VMQR{r87USEhstNlKgR7$*HoPRS zyIt6!`NC0tdG*S<2Fi*Zg$s$@F%t@Z?NEA>3za|4tJ(^`8JLz9D_l>+se_yNJTAE=O;%M`6n`gr z66nE{`#7@odVl;LuJGjuL+v&H_UAh(y^u$`Gh|0?L{4<3K76yhM`pNX?;*vd4(7L{ zHru?lvQ(k3Q4EE*v%bl{wc5E-k*}qxlPy#Ry|izJUvn&ZiILyBTuk+jD!Renl@LYj z#tcMyQrmIX@Yn{I_+$mbRkR8*#?VV(VT5O1Uah%2Oe1G#Y%SkW&E%|36?!J`_z#MH zo2Z`Er!r3s;^O(#bXXO*(O6-qzia&fpG@7$+*#4@a5)Ja$`&0?7cg&&-%UZ(uA(ZI zJyEOuC%_o`6t(DnkI9T18&bpPv5%kD%=k>+`CYa7lLE%;s#?T!V4=fFm)qCFgQ_yP zP8#DrRd40w;I?hVbgf-pSGKscV#F)z&%*)(RlV8q$QPLz9S-M2yuR$Qr@fT<96`LV zSH2STTreDZ(w+)#sUJ8)Qr*xz;iw3{r-v5B+}N|&}d>%jj(^WrpvG@%;S{TO}nC`^4^7 z_932%N_HuGHMUoE=JVsm#LinIpDk$=oXU*%-}!J(?&RQ`F4)U6kBZ(;8`x32g6 z2R*#nWBc>9$ntN;8LV`jz5E7jstezGb`<+PmMZk&aBLT-ISdQHgLRAxrOM=GDcTvA z)U}@)j8b_q0Hg)Ln=U?h9LN69rPNd0>6yi#cUX%%Pyg_fr9BC>Q&p@yOBF0XG5VG1@D9(} zuvp^Ls$1nrT9bzOQGJOV$!tT-CC+nM{CLdX{fJK2V)7SlotpTBy928m@V0jH=LXi# z1L0TsF(9~Vn`B$ia7roHn^q*@b&Wu`n#}IHy zMd{!p>z;hv53v_98SfRRiW;LM0~7<-JQ#J|=cz6OuD@HR3=BUA>>ho=plDwG71wMhy;4??c+YUMCdV|vs=)zTpa~?sQIItfJjbxDTg*T5e zl%L6Z`f@P0m2*bipIR>K zCC2B!hHivnR&x4WJZE?U;u)#u;>l!bAO{ zM{p3vDW!46a4=ieb~dE05%V4BtViMa{vcV6I}0p~BVpo}kY&Ex!kgJYA2n64@Q&GC z{N#`(YdAQXj$AqUyUL5XiG|szbl(g%jzJ#sXm%fDiK>(FD6MMrsOXfH=Tg7wZg$EU z0B@&ztBWJ`qSZUSBFr_;{=5@7+gmk#8RQTxo~#)&=heNrkNlK?YH2)vYl)2;y6UzjgvkU)@##)tH>(x7 zHzNhrE_Y_8+V<0b;n1*>0SbRc5dyDZw`@t8MUs_XVH+(J1b+GtaR(k+c?ZKV7Uz7S zvs{Eo;AO=}3?@LXpKuL%8Zip1bkbj?bv=zOKf$wgt+h^|gt5<5RdtNRdSb@F~Jk%u)tP|z^tO4LQwxTX?Ena$; zNwg;mZr6Rod6TEDF>}9YR-M^_Py|tf-oIIT`gmnxelxo@N8#qCy5WGDj+lpMhB!Kn z;XmY7@===>c#Lx0xtqG z&%Am}DyO^(E5I9)k5^*Eldl!;VW_`&=gn)cf|GpSNnTXjbCKK35FX-weIYPm>xmq> zaA<1xnYah{f7*(hMgVhnE$7EFZIzUmlFcnIMm@f~35S{@P!2LmKrRM47hg>Ib5!JO zgI8r1K%%_RyjupD=n*CeFTu05@SAZARQ}(QmR^J)rVhN^+*95JqYncc60aGDlyJ@4 zp)2fU)Z-8AC;fGa_mfW+|4g4BYnaj`#oNL3gKIX1bcLdHm>r}VzyPsHUYx6Lvq+yC zI6l*M=2mzza#!0eIIG<#61YjX1II`qH@7jntuNJT=cZoQM@9H4b$yuDnh5fnK`BZH zrFM$G8I;6?E2?xKe57K<8LTm%Sy*K=9mkK4+R)6(sYQev>JxJXLki3KBu2P@|p#&>Sy={t(c2p4+7Yb$7gq}1_xq2Em}%QB?g@%h2agT z^`SYhsV{QJYt@*i24#}eT6>8wr()~WFr!MvWX}l>bfTWXF*9TRo)WR zy`d;Xv>+u~MbNJX54r-MBJM^+f%Ns22X87b&L>sM)5@_2OwXqST41O@{rtrIxM-+@ zY-*T3A;#4@Q~~AGor5-K#i@|LV0a+mHl%|Ix3#fXLwVNj()9JFhS_ue0A_%Q-sOJO z<(O0dhVVMDeIa{O4|V;8`A{@uo1G+Q&Q=rOV>Y>`Lk6hrbija*03Qr;Ljx0a0y8Z) zKTOV`qNq*ngeZyV@Bys;IApyZ6lP$5p8D}JH}!F-Fnm)NYqR;bBeSl7tI!@Bc;9o7 z$Gd!=rt*`@OUQtlla=g0+Gt#DapNHFN3VjLWp2;%by_Ai zkit;e;gTpmeV5p(XD*_RV)DnPgZ#q60If-8mHtlc>tR{o{hi=P6&_UQe(UfPi3dtr z^6@m$Y9uK0dr5WFB5mE~H-+k#2@i$H;bC?{&R@1gQGYnJ{R!V>3{r|AKk{*DeVU10 zW1ly&akafY-|VJ%S5Oae>kzJ<4UvL8L*J^?XA$McTV-_C^D#&>$T33z8Twai=Mx6# z8$~V{*pYi?I_t&9SaIlAP7FBJA>|199nsEBvD7eg+JV31lo=uw|2+Ik%gMU#Tw}k@ zVw>Y!F;SC0;N((Ma87)+S;&qXOv=#&j{^Oz;z>Y$ZtAm^ zmKEY{%4O~!!6M0|DdI>+vTx**zm&1ws+p1jKnkBCyVp=etjy~{C;a`|BGl+dI#3mw zHed8EWhUHVy{)N)(hOAl`^M<#<$hB%Cc7NzxD3BH2X>+w@m$x&R7y@7OID%}P@J{^ zE+Kk7+KcBqLrlH7-plh6yCD+k>peoJ6s0JPIl9R525xb?xaoO^TjCj%Kw%XwsOaZ3 z}N16-D#IBTM?s)VpDT304!XZ96Oo|dBe&$NDaeX&}^ z$~VMT(#x!DBvegDu74q?G_^9!6aB2#*6%e!ii*1vqW|pD@Z}>xXOFK;1NX#NMpsHlLjUoDzAc~m_)`7#4Bf9p+M=#u|ZqPuGTjeHEM z!Zsw_*Je&}L)cBazuUnOia z7S<9EGq2+Wxq=8lkarU;lt+u7FI{*1Tt^Y=b6}cWlvQsf&bjb2xWRI)RA9a6&1JLK zSF`P01FnbZ?NW#Le9e{*pHyr@ouOF6JvHti?cG=@C-bP1b96*|qp)%D?eBo|m<|Eh zrzFCFKYN272p>ZOHbue>bc;w5VKypG$}f}=HmGV94u0i4pW9YOub$bW5BJ?24Jv`- z!WZ7roW1QFG_TJzL%=ezlfn_8ZYBakPH zGkZdnix{$?VEUnXOk3LC#ul$BFgGSWI~qikUcoMDF0Ugbv`PfFtbNuDO^5bKNa;gx zL0Wg?_os-y(3(x^#ddqo4hOH;D@Lo_^~%UoKK2F3TQVO9PJBqYjaM>R$JL*9t9EpY z-T(}IAczflhOT*tspRSR$EFiawYId~DjzxeAmyxKWF16!tZz)>PR{}r;bZ0%I-jz{ z?2f#+PFoaXt}}rAZ+h#{+o!wxcRHmMF`X|9f*Vq>!kgM-M{<#0yD-p3GqRKp)vq2| z1c^)?Sa z-pMZAy}2%`{9FkdKRA@nqwh8d?h)*gV=^rq4S>By^qels;gNn+0hOL%8ff0V^EKRd z%PUKlMf3}IT703Ccw_20lz6XEaRh1JXvWd%3*NCT6_Zdz|7I6oe?6Ld;7%q;h@1oS zoEU&l0$T1UhhqBZK&jsKMxdSMX)rf7J)>Q;$BHBg`KBTqItCWQdNtp*q?glr+Eelysv0M*I6{}DVZx{?`^Uu4;s0Xj8Q~R$yDwj z3QzWDv*A0HW{?&i!WSKQ{HN~B8{OiNb#xeQUF%j_r?a0}8%KbjltOn$vQhJXQWv8; zKj^PHW{X5Jmxa9_ZrQ^F)4BrwK3csjL6IGV;eEy+ik{@CoO#l6|K2vTa+h}!|4(9X zs0^2*7rGiQw>O#E-!UQA@>?uoFIfGqd2a+l$w1p~rz5PJtA+Q^`IZ&Bc`w}N4MTPAiW_%6#Unr`<`Mg0Nul&Y4ZRBZ){>^dCJ z_%zr}C1{%mPIu`$V$8|gV`M?>EqHplxgKYhHB?+G#PBZ1O?U>IZ2mrJ*t`J;i(SHb zVa1C2=a<-pUaV&eW3!WQ?6p|9kdCh7o&;}zM@%y zY#o+euuqr*t`m#pI$zc8nN-+mId{1oz#8BP5dQ1?^Hw;V(zHbfjlK^V^Xd zitMzo&ZgmL_j4s?!x&kdQM;7}nFGClEd%akZ83Ia>$nBCzE1rP$u^n>^P^izh@!j6 z2u1W42R3VN!kXJJjL$adz-+M&;6x^Ji8d4fe1vFlC1kqdkYDnoE;)DC9N-YPlvV@uf* zq1~26mY$A#?!CV8tZ#C)d8{#gZffd%HJ6+=eE<>`?DjTg+%Z9Q{RaW~`LAXe^>;5c zO0X8;&##$|yG`$hY$^mfV2FmT7{PP`gE~z~wGuH^dX|;81G Hl@@rnJC(2SQpH24Xt^Wj|NV2ky# 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 From fa064f0ffb61ac8474eca3d2214f62fc821b3dda Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 12:49:54 -0800 Subject: [PATCH 03/11] Add share buttons to home page --- components/{PostShareButtons => ShareButtons}/index.js | 4 +++- components/{PostShareButtons => ShareButtons}/style.js | 2 ++ pages/index.js | 9 ++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) rename components/{PostShareButtons => ShareButtons}/index.js (87%) rename components/{PostShareButtons => ShareButtons}/style.js (89%) diff --git a/components/PostShareButtons/index.js b/components/ShareButtons/index.js similarity index 87% rename from components/PostShareButtons/index.js rename to components/ShareButtons/index.js index ee9c4b1..4fb40c5 100644 --- a/components/PostShareButtons/index.js +++ b/components/ShareButtons/index.js @@ -22,7 +22,9 @@ export default function ShareButtons() { Tweet - Copy + + Share Link + ); } diff --git a/components/PostShareButtons/style.js b/components/ShareButtons/style.js similarity index 89% rename from components/PostShareButtons/style.js rename to components/ShareButtons/style.js index f0013cc..a8e0e76 100644 --- a/components/PostShareButtons/style.js +++ b/components/ShareButtons/style.js @@ -5,6 +5,8 @@ export const Container = styled.div` display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 16px; + margin-top: 32px; + margin-bottom: 8px; button { width: 100%; diff --git a/pages/index.js b/pages/index.js index c442194..6190195 100644 --- a/pages/index.js +++ b/pages/index.js @@ -3,6 +3,7 @@ import * as React from 'react'; import Page, { SectionHeading, Heading, Subheading } from '../components/Page'; import type { GetInitialProps } from '../types'; import Checklist from '../components/Checklist'; +import ShareButtons from '../components/ShareButtons'; class Index extends React.Component<{}> { static async getInitialProps({ res }: GetInitialProps) { @@ -19,13 +20,15 @@ class Index extends React.Component<{}> { return ( - Improve your online privacy and security + Improve your digital privacy and security - The follow resources are designed to improve everyday people’s - security and privacy while using the internet. + The following resources are designed to keep you safe while using + digital devices and the internet. + + ); From c2da7af75557de952528f6697bee59e680427f34 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 12:57:59 -0800 Subject: [PATCH 04/11] Styling and homepage copy tweaks --- components/Page/style.js | 7 ++++--- components/ShareButtons/style.js | 5 +++-- pages/index.js | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/components/Page/style.js b/components/Page/style.js index ed92531..1462d61 100644 --- a/components/Page/style.js +++ b/components/Page/style.js @@ -48,8 +48,8 @@ export const SectionHeading = styled.div` `; export const Heading = styled.h3` - font-size: 32px; - font-weight: 700; + font-size: 40px; + font-weight: 800; line-height: 1.2; color: ${theme.text.default}; @@ -62,7 +62,8 @@ export const Subheading = styled.h4` font-size: 22px; font-weight: 400; color: ${theme.text.tertiary}; - margin-top: 16px; + margin-top: 12px; + line-height: 1.2; a { color: ${theme.text.default}; diff --git a/components/ShareButtons/style.js b/components/ShareButtons/style.js index a8e0e76..5946ddd 100644 --- a/components/ShareButtons/style.js +++ b/components/ShareButtons/style.js @@ -5,8 +5,9 @@ export const Container = styled.div` display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 16px; - margin-top: 32px; - margin-bottom: 8px; + margin-top: 40px; + margin-bottom: 16px; + width: 100%; button { width: 100%; diff --git a/pages/index.js b/pages/index.js index 6190195..dce05c1 100644 --- a/pages/index.js +++ b/pages/index.js @@ -20,10 +20,10 @@ class Index extends React.Component<{}> { return ( - Improve your digital privacy and security + Be safe on the internet. - The following resources are designed to keep you safe while using - digital devices and the internet. + An open source collection of resources designed to improve your + online privacy and security. From 14adce77060b317b4ed343d9cce201caa4c90366 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 12:58:28 -0800 Subject: [PATCH 05/11] simPin => carrierPin --- config/{simPin.js => carrierPin.js} | 4 ++-- config/data.js | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) rename config/{simPin.js => carrierPin.js} (94%) diff --git a/config/simPin.js b/config/carrierPin.js similarity index 94% rename from config/simPin.js rename to config/carrierPin.js index 0f4c4e4..c34c84e 100644 --- a/config/simPin.js +++ b/config/carrierPin.js @@ -1,6 +1,6 @@ export default { - id: 'simPin', - title: 'Set up a carrier SIM PIN', + id: 'carrierPin', + title: 'Set up a mobile carrier PIN', description: `SIM hijacking is a method where a hacker can socially engineer or bribe a mobile carrier to transfer your phone number to a SIM card the hacker owns. \n\nIf you use text messages as a two-factor authentication method, this gives hackers the ability to bypass 2FA and in most cases reset your passwords completely. diff --git a/config/data.js b/config/data.js index 976b9b9..38b7676 100644 --- a/config/data.js +++ b/config/data.js @@ -1,7 +1,7 @@ import passwordManager from './passwordManager'; import strongDevicePasscode from './strongDevicePasscode'; import twoFactor from './twoFactor'; -import simPin from './simPin'; +import carrierPin from './carrierPin'; import creditFreeze from './creditFreeze'; import encryptedHardware from './encryptedHardware'; import dns from './dns'; @@ -12,12 +12,13 @@ import email from './email'; import appPermissions from './appPermissions'; import socialMedia from './socialMedia'; import phishing from './phishing'; +import webcam from './webcam'; export default { passwordManager, strongDevicePasscode, twoFactor, - simPin, + carrierPin, creditFreeze, encryptedHardware, dns, @@ -26,6 +27,7 @@ export default { searchEngine, email, appPermissions, + webcam, socialMedia, phishing, }; From 8398dc98ea113905a189ecee689d7f90c0cbf965 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 12:58:31 -0800 Subject: [PATCH 06/11] Add webcam section --- config/webcam.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 config/webcam.js diff --git a/config/webcam.js b/config/webcam.js new file mode 100644 index 0000000..3e01bb3 --- /dev/null +++ b/config/webcam.js @@ -0,0 +1,17 @@ +export default { + id: 'webcam', + title: 'Cover your webcam', + description: `You should add a webcam cover on your laptop or desktop computers. In the case that your webcam light indicator breaks, or a hacker is able to turn on your camera without triggering the indicator light, a cover will keep you hidden. + `, + resources: [ + { + name: 'Webcam covers (3 pack) on Amazon (no affiliate)', + url: + 'https://www.amazon.com/0-027in-MacBook-Smartphone-Protecting-Security/dp/B077ZT29P2/ref=sr_1_4?s=pc&ie=UTF8&qid=1547412984&sr=1-4&keywords=webcam+cover', + }, + { + name: 'Related watching: Black Mirror "Shut Up and Dance"', + url: 'https://en.wikipedia.org/wiki/Shut_Up_and_Dance_(Black_Mirror)', + }, + ], +}; From c0a6fac1b5ddccaef429eefe13d0ffc8bb3197e5 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 12:59:43 -0800 Subject: [PATCH 07/11] Better lineheight for longer description text on about apge --- components/Page/style.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/Page/style.js b/components/Page/style.js index 1462d61..0cc314a 100644 --- a/components/Page/style.js +++ b/components/Page/style.js @@ -50,8 +50,8 @@ export const SectionHeading = styled.div` export const Heading = styled.h3` font-size: 40px; font-weight: 800; - line-height: 1.2; color: ${theme.text.default}; + line-height: 1.2; @media (max-width: 968px) { max-width: 100%; @@ -63,7 +63,7 @@ export const Subheading = styled.h4` font-weight: 400; color: ${theme.text.tertiary}; margin-top: 12px; - line-height: 1.2; + line-height: 1.4; a { color: ${theme.text.default}; From a2cfb7bfb57ae1b8a89440943b2f242c55f65735 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 13:11:01 -0800 Subject: [PATCH 08/11] Readme on approchable language --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b78a88..a2dbebd 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,9 @@ This project should be considered a living document of resources and application If you have resources to add to existing sections, please open a pull request. -- Aim for reputable sources for guides and new coverage +- Aim for reputable sources for guides and new coverage. - If adding an app, please include links to as many platforms as possible. See `config/*.js` for examples of how data is formatted. +- Try to use approachable human-readable language. Remember that even non-technical folks need to stay safe online. If you would like to create a new category of security and privacy resources, please open an issue first with your proposed category. Please explain why this additional category should stand alone from other existing sections. From c4c3da7fb491aeace331535ddda0e29b68ec8c85 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 13:11:09 -0800 Subject: [PATCH 09/11] Tiny style tweaks --- components/ChecklistItem/style.js | 1 + components/Page/style.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/components/ChecklistItem/style.js b/components/ChecklistItem/style.js index e576e96..c5fd10e 100644 --- a/components/ChecklistItem/style.js +++ b/components/ChecklistItem/style.js @@ -29,6 +29,7 @@ export const Description = styled(Markdown)` font-weight: 400; color: ${theme.text.secondary}; margin-top: 8px; + padding-right: 16px; p:first-of-type { margin-top: 0; diff --git a/components/Page/style.js b/components/Page/style.js index 0cc314a..903f6f7 100644 --- a/components/Page/style.js +++ b/components/Page/style.js @@ -49,7 +49,7 @@ export const SectionHeading = styled.div` export const Heading = styled.h3` font-size: 40px; - font-weight: 800; + font-weight: 700; color: ${theme.text.default}; line-height: 1.2; From 129d1b52b454b56d991cd363a1f8206cfaa1d0e4 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 13:35:19 -0800 Subject: [PATCH 10/11] Style tweak --- components/ChecklistItem/style.js | 1 - 1 file changed, 1 deletion(-) diff --git a/components/ChecklistItem/style.js b/components/ChecklistItem/style.js index c5fd10e..ddc17ff 100644 --- a/components/ChecklistItem/style.js +++ b/components/ChecklistItem/style.js @@ -247,7 +247,6 @@ export const AppSourcesLabel = styled.span` export const ResourceRowContainer = styled.a` display: flex; - align-items: center; margin-top: 4px; width: 100%; border-radius: 6px; From 3d8d612daa2b15f85f708268f748147990045703 Mon Sep 17 00:00:00 2001 From: Brian Lovin Date: Sun, 13 Jan 2019 13:35:22 -0800 Subject: [PATCH 11/11] Copy review --- config/appPermissions.js | 14 +++++++++++++- config/browsers.js | 12 ++++++++++++ config/carrierPin.js | 6 +++--- config/creditFreeze.js | 6 +++--- config/dns.js | 4 ++-- config/encryptedHardware.js | 6 +++--- config/passwordManager.js | 17 +++++++++++++---- config/phishing.js | 8 +++++++- config/searchEngine.js | 11 ++++++++++- config/socialMedia.js | 4 ++-- config/strongDevicePasscode.js | 4 ++-- config/twoFactor.js | 6 +++--- config/vpn.js | 26 +++++++++++++------------- config/webcam.js | 4 ++-- 14 files changed, 88 insertions(+), 40 deletions(-) diff --git a/config/appPermissions.js b/config/appPermissions.js index 60df71f..3eb1c29 100644 --- a/config/appPermissions.js +++ b/config/appPermissions.js @@ -1,7 +1,7 @@ export default { id: 'appPermissions', title: 'Review app permissions on your devices', - description: `You should review all applications that have access to your photos, camera, location, and microphone. Ensure that any app with permission is made by someone you trust. + description: `You should review all applications that have access to your photos, camera, location, and microphone. Ensure that you trust apps with sensitive permissions. `, resources: [ { @@ -29,5 +29,17 @@ export default { url: 'https://www.intowindows.com/how-to-change-app-permissions-in-windows-10/', }, + { + name: 'Apps and services with access to your Google account', + url: 'https://myaccount.google.com/permissions', + }, + { + name: 'Apps and services with access to your Facebook account', + url: 'https://www.facebook.com/settings?tab=applications', + }, + { + name: 'Apps and services with access to your Twitter account', + url: 'https://twitter.com/settings/applications', + }, ], }; diff --git a/config/browsers.js b/config/browsers.js index 9f5d6ac..aa7257a 100644 --- a/config/browsers.js +++ b/config/browsers.js @@ -2,6 +2,8 @@ export default { id: 'browsers', title: 'Use a privacy-first web browser', description: `You should use a web browser that protects you from tracking, fingerprinting, and unwanted advertisements. + + Modern browsers have made it simple to transfer your bookmarks and preferences in order to reduce switching pains. `, apps: [ { @@ -60,5 +62,15 @@ export default { url: 'https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/', }, + { + name: 'How to protect yourself from browser fingerprinting', + url: + 'https://www.comparitech.com/blog/vpn-privacy/what-is-browser-fingerprinting-how-to-protect-yourself/', + }, + { + name: 'Browser fingerprinting, and why they are so hard to erase', + url: + 'https://www.networkworld.com/article/2884026/security0/browser-fingerprints-and-why-they-are-so-hard-to-erase.html', + }, ], }; diff --git a/config/carrierPin.js b/config/carrierPin.js index c34c84e..2563ce7 100644 --- a/config/carrierPin.js +++ b/config/carrierPin.js @@ -1,11 +1,11 @@ export default { id: 'carrierPin', title: 'Set up a mobile carrier PIN', - description: `SIM hijacking is a method where a hacker can socially engineer or bribe a mobile carrier to transfer your phone number to a SIM card the hacker owns. + description: `SIM hijacking is a process where a hacker socially engineer or bribe a mobile carrier to transfer your phone number to a SIM card they own. - \n\nIf you use text messages as a two-factor authentication method, this gives hackers the ability to bypass 2FA and in most cases reset your passwords completely. + \n\nIf you use text messages as a two-factor authentication method, this gives hackers the ability to bypass 2FA and in most cases the ability to reset your passwords completely. - \n\nYou should enable a carrier security PIN that is required before any SIM transfers can be processed.`, + \n\nYou should enable a carrier security PIN. This PIN will be used before a carrier can make changes to your SIM cards or mobile account settings.`, resources: [ { name: 'SIM swap attacks and what you need to know', diff --git a/config/creditFreeze.js b/config/creditFreeze.js index 28f559f..4ad1f7f 100644 --- a/config/creditFreeze.js +++ b/config/creditFreeze.js @@ -1,11 +1,11 @@ export default { id: 'creditFreeze', title: 'Freeze Your Credit', - description: `If you live in the United States, you should safely assume that hackers have access to your credit report, social security number, address history, and personal contact information. It is important that hackers with this knowledge are not able to impersonate you in order to open new lines of credit or make large purchases. + description: `If you live in the United States, you should safely assume that hackers have access to your credit report, social security number, address history, and personal contact information. It is important that hackers with this knowledge are not able to open new lines of credit or make large purchases in your name. - \n\nYou should enable a freeze on all credit report checks at the three major credit bureaus. Any time you want to open your own line of credit or make a credit-backed purchase (for example, the iPhone Upgrade Program), you can add a time-blocked "credit thaw" that will allow legitimate credit checks to be processed. + \n\nYou should enable a freeze on all credit report checks at the three major credit bureaus. Whenever want to open a new line of credit or make a credit-backed purchase (for example, the iPhone Upgrade Program), you can create a "credit thaw" that will allow legitimate credit checks to be processed within a predetermined amount of time. - \n\n**Ensure that you enable a freeze at all three credit bureaus**`, + \n\n**Ensure that you enable a freeze at all three credit bureaus.**`, resources: [ { name: 'FTC Credit Freeze FAQs', diff --git a/config/dns.js b/config/dns.js index 57ef56c..b976f0c 100644 --- a/config/dns.js +++ b/config/dns.js @@ -1,9 +1,9 @@ export default { id: 'dns', title: 'Use 1.1.1.1 for DNS resolution', - description: `DNS (Domain Name Servers) are the internet's equivalent of a phone book. They translate a name like 'google.com' into an IP address. By default DNS is slow and insecure. + description: `DNS (Domain Name Servers) are the internet's equivalent of a phone book. They translate a name like 'google.com' into an IP address. By default DNS is slow and insecure. Many internet service providers track and log data that flows through DNS, in some cases reselling this data to advertisers. - \n\nCloudflare has released a privacy and performace-focused DNS tool that protects your internet traffif from prying eyes. It's faster than an average DNS service as well, making it faster to use the internet. + \n\nCloudflare has released a privacy and performace-focused DNS tool that protects your internet traffic from internet service providers and people snooping on public Wi-Fi networks. 1.1.1.1 is faster than the average DNS service as well, making it faster to use the internet. `, apps: [ { diff --git a/config/encryptedHardware.js b/config/encryptedHardware.js index 7447272..b44dbaa 100644 --- a/config/encryptedHardware.js +++ b/config/encryptedHardware.js @@ -1,9 +1,9 @@ export default { id: 'encryptedHardware', - title: 'Encrypt Your Phones and Computers', - description: `If your phone or computer is ever stolen, hackers can attempt to read the data directly off of the hard drive or storage mechanism. If your device is unencrypted, hackers will have access to all of your stored data. + title: 'Encrypt your devices', + description: `If your phone or computer is ever stolen, a thief may try to read or export your personal data. If your device is unencrypted, hackers will have access to anything stored on that device, including photos, emails, documents, and contacts.. - \n\nYou should enable encryption on every phone and computer you use.`, + \n\nYou should enable encryption on every phone and computer you use. Encrypting your devices makes it nearly impossible for a thief to read your data without having your encryption password.`, resources: [ { name: 'Why you should encrypt your computer', diff --git a/config/passwordManager.js b/config/passwordManager.js index 26659c2..13e0e24 100644 --- a/config/passwordManager.js +++ b/config/passwordManager.js @@ -1,10 +1,10 @@ export default { id: 'passwordManager', - title: 'Password Manager', - description: `A password manager helps you set unique passwords for each service you use. Having a unique password ensures that if one service you use is hacked, the leaked password won’t allow access to all of your accounts. + title: 'Use a password manager', + description: `A password manager helps you create a unique password for each online service you use. Having a unique password ensures that if one service you use is hacked, the compromised password won’t allow access to all of your other accounts. - \n\nAt the very minimum you should have a unique password for high-value accounts like a Google account, email applications, an Apple ID, and financial accounts. - `, + \n\nAt the very minimum you should have a unique password for high-value accounts like Google, Apple, email, and banking accounts. + `, apps: [ { name: '1Password', @@ -43,5 +43,14 @@ export default { url: 'https://motherboard.vice.com/en_us/article/59yv5x/how-password-managers-work-and-why-you-should-use-one', }, + { + name: 'Password managers compared', + url: + 'https://www.howtogeek.com/240255/password-managers-compared-lastpass-vs-keepass-vs-dashlane-vs-1password/', + }, + { + name: 'Find out if your passwords have been hacked', + url: 'https://haveibeenpwned.com/', + }, ], }; diff --git a/config/phishing.js b/config/phishing.js index 274707a..04cc2ed 100644 --- a/config/phishing.js +++ b/config/phishing.js @@ -1,7 +1,13 @@ export default { id: 'phishing', title: 'Educate yourself about phishing attacks', - description: `asdf`, + description: `Phishing is an attempt to obtain sensitive information (like an account password) by disguising as a trustworthy person or company. Phishing often occurs via email where a hacker will use social engineering to convince someone to click a link that goes to a fake login page. The fake login page then sends anything the victim types (including usernames and passwords) to the hacker. + + \n\nIn recent years phishing attacks have become increasingly sophisticated and hackers are learning to use data that people put on the web to create highly specific and targeted attacks. + + \n\n**Smart people are not immune to phishing.** + + \n\nYou should learn the basics of phishing and how to identify a phishing attempt.`, resources: [ { name: 'Podcast: What kind of idiot gets phished?', diff --git a/config/searchEngine.js b/config/searchEngine.js index ace5d02..7532f5e 100644 --- a/config/searchEngine.js +++ b/config/searchEngine.js @@ -1,7 +1,7 @@ export default { id: 'searchEngine', title: 'Use a privacy-first search engine', - description: `You should use a search engine that protects you from tracking, fingerprinting, and unwanted advertisements. + description: `You should use a search engine that protects you from tracking, fingerprinting, and unwanted advertisements. DuckDuckGo is a privacy-first search engine that does not store your search history, has strict location and personalization permissions, and publishes regular content teaching people how to be more safe on the web. `, apps: [ { @@ -23,6 +23,15 @@ export default { name: 'DuckDuckGo Privacy', url: 'https://duckduckgo.com/privacy', }, + { + name: 'About DuckDuckGo', + url: 'https://duckduckgo.com/about', + }, + { + name: 'DuckDuckGo: No, we’re not using fingerprinting to track you', + url: + 'https://techcrunch.com/2019/01/07/duckduckgo-browser-fingerprinting/', + }, { name: 'Everything Google knows about you', url: 'https://myactivity.google.com/myactivity', diff --git a/config/socialMedia.js b/config/socialMedia.js index cd85493..747a4cf 100644 --- a/config/socialMedia.js +++ b/config/socialMedia.js @@ -19,11 +19,11 @@ export default { url: 'https://www.facebook.com/settings?tab=location', }, { - name: 'Facebook face recognition', + name: 'Facebook face recognition settings', url: 'https://www.facebook.com/settings?tab=facerec', }, { - name: 'Your Facebook data', + name: 'Your Facebook information', url: 'https://www.facebook.com/settings?tab=your_facebook_information', }, { diff --git a/config/strongDevicePasscode.js b/config/strongDevicePasscode.js index 2a35646..db108a0 100644 --- a/config/strongDevicePasscode.js +++ b/config/strongDevicePasscode.js @@ -1,7 +1,7 @@ export default { id: 'strongDevicePasscode', title: 'Create a strong device passcode', - description: `A four-digit passcode for your phone or other devices is no longer an acceptable security practice. You should be using a 6+ digit passcode at the very minimum, and for extra security use a 6+ character passcode containing both numbers and letters.`, + description: `A four-digit passcode for your phone or other devices is no longer considered secure. You should use a 6+ digit passcode at the very minimum, and for extra security use a 6+ character passcode containing both numbers and letters.`, resources: [ { name: 'How long it takes to break a passcode', @@ -12,7 +12,7 @@ export default { url: 'https://support.apple.com/en-us/HT204060', }, { - name: 'Setting up an Android passcode', + name: 'Changing your Android passcode', url: 'https://phandroid.com/2014/03/20/android-101-lock-screen/', }, ], diff --git a/config/twoFactor.js b/config/twoFactor.js index 83a9e8e..1a14a6c 100644 --- a/config/twoFactor.js +++ b/config/twoFactor.js @@ -1,13 +1,13 @@ export default { id: 'twoFactor', - title: 'Two-Factor Authentication (2FA)', - description: `Two-factor authentication is an extra layer of security on top of passwords. It ensures that someone logging into an account is who they say they are by requiring an extra piece of information besides the account password. + title: 'Use two-factor authentication', + description: `Two-factor authentication (2FA) adds an extra layer of security on top of passwords. It ensures that someone logging into an account is who they say they are by requiring an extra piece of information besides the account password. \n\nThis extra information is usually either something you know, something you have, or something you are - for example, a biometric signal like FaceID. \n\n**You should not use your phone number as a two-factor method.** - \n\n2FA should be installed on accounts that can lock you out of other accounts: e.g. a Google account, email applications, an Apple ID, and financial accounts. + \n\nAt minimum 2FA should be installed on accounts that can lock you out of other accounts: e.g. a Google account, email applications, an Apple ID, and financial accounts. For stronger security, ensure that 2FA is enabled on every service you use that supports it. `, apps: [ { diff --git a/config/vpn.js b/config/vpn.js index d3a36a5..065a82d 100644 --- a/config/vpn.js +++ b/config/vpn.js @@ -1,11 +1,22 @@ export default { id: 'vpn', title: 'Use a VPN', - description: `A VPN, or virtual private network, is a useful tool to secure an internet connection. It guarantees that that data you are sending and receiving is encrypted, preventing people from snooping on your traffic. + description: `A VPN, or virtual private network, is a useful tool to secure an internet connection. It guarantees that data you are sending and receiving is encrypted, preventing people from snooping on your traffic. - \n\nYou should use a VPN provider that you trust to not harvest and re-sell your data. The best VPNs often charge a monthly subscription - this is a good thing, because it means their business model is not reliant upon aggregating and reselling data. + \n\nYou should use a VPN provider that you trust to not harvest and re-sell your data. The best VPNs often charge a monthly subscription - this is a good thing, because it means their business model is not reliant upon reselling your data to advertisers. `, apps: [ + { + name: 'IVPN', + image: '/static/img/ivpn.jpg', + url: 'https://www.ivpn.net/', + sources: { + windows: 'https://www.ivpn.net/apps-windows', + macos: 'https://www.ivpn.net/apps-macos', + ios: 'https://www.ivpn.net/apps-ios', + android: 'https://www.ivpn.net/apps-android', + }, + }, { name: 'Encrypt.me', image: '/static/img/encrypt-me.jpg', @@ -18,17 +29,6 @@ export default { 'https://play.google.com/store/apps/details?id=com.stackpath.cloak', }, }, - { - name: 'IVPN', - image: '/static/img/ivpn.jpg', - url: 'https://www.ivpn.net/', - sources: { - windows: 'https://www.ivpn.net/apps-windows', - macos: 'https://www.ivpn.net/apps-macos', - ios: 'https://www.ivpn.net/apps-ios', - android: 'https://www.ivpn.net/apps-android', - }, - }, { name: 'ExpressVPN', image: '/static/img/expressvpn.jpg', diff --git a/config/webcam.js b/config/webcam.js index 3e01bb3..66386b3 100644 --- a/config/webcam.js +++ b/config/webcam.js @@ -1,11 +1,11 @@ export default { id: 'webcam', title: 'Cover your webcam', - description: `You should add a webcam cover on your laptop or desktop computers. In the case that your webcam light indicator breaks, or a hacker is able to turn on your camera without triggering the indicator light, a cover will keep you hidden. + description: `You should add a webcam cover on your laptop and desktop computers. In the case that your webcam light indicator breaks, or a hacker is able to turn on your camera without triggering the indicator light, a cover will keep you hidden from view. `, resources: [ { - name: 'Webcam covers (3 pack) on Amazon (no affiliate)', + name: 'Webcam covers (3 pack) on Amazon · No affiliate link', url: 'https://www.amazon.com/0-027in-MacBook-Smartphone-Protecting-Security/dp/B077ZT29P2/ref=sr_1_4?s=pc&ie=UTF8&qid=1547412984&sr=1-4&keywords=webcam+cover', },