<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Alex Grinman</title>
    <description>The latest articles on Forem by Alex Grinman (@agrinman).</description>
    <link>https://forem.com/agrinman</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F75593%2Ff004c4d2-4d48-45a6-8d17-d31370407fe0.jpg</url>
      <title>Forem: Alex Grinman</title>
      <link>https://forem.com/agrinman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/agrinman"/>
    <language>en</language>
    <item>
      <title>Why did we build ApproveAPI?</title>
      <dc:creator>Alex Grinman</dc:creator>
      <pubDate>Wed, 06 Mar 2019 15:15:04 +0000</pubDate>
      <link>https://forem.com/agrinman/why-did-we-build-approveapi-3p82</link>
      <guid>https://forem.com/agrinman/why-did-we-build-approveapi-3p82</guid>
      <description>

&lt;p&gt;ApproveAPI lets you build real-time approvals and secondary verifications into any application or workflow with one simple API. You can provide a tap-to-approve experience for all your users on any device via email, SMS, and push notifications.&lt;/p&gt;

&lt;p&gt;Learn more at &lt;a href="https://approveapi.com"&gt;approveapi.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--39lOofhf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/m165lfzlip8nj5s0vtuz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--39lOofhf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/m165lfzlip8nj5s0vtuz.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Why did we build it?
&lt;/h1&gt;

&lt;p&gt;If you've ever used Krypton for auth-ing an SSH session, signing a Git commit, or 2FA via WebAuthn/U2F or even if you've used Duo -- you know how satisfying it is to just hit the 'Approve' button on a prompt and then you're instantly logged in or authorized some action.This is a much sweeter experience than punching in those 6-digit codes which always looks different on every site.&lt;/p&gt;

&lt;p&gt;Krypton solves &lt;em&gt;developer&lt;/em&gt; &lt;strong&gt;sign-in&lt;/strong&gt; needs.&lt;/p&gt;

&lt;p&gt;We wanted to go beyond developers and beyond just logins. With ApproveAPI we bring the same &lt;strong&gt;push-to-approve&lt;/strong&gt; UX to everyone for any type of verification or approval workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rated E for Everyone
&lt;/h2&gt;

&lt;p&gt;Everyone has a phone but not everyone is willing to download an app. A ubiquitous solution has to work everywhere. One goal of ApproveAPI is to work for &lt;em&gt;everyone&lt;/em&gt; out-of-the-box. &lt;/p&gt;

&lt;p&gt;ApproveAPI lets you create the same authorization UX for all your users on day one with our customizable approval prompts delivered via Email and SMS.&lt;/p&gt;

&lt;p&gt;It's not just email and SMS though. From Krypton, we know how good an app-based experience can be, but why can't &lt;em&gt;every&lt;/em&gt; app support this? With ApproveAPI you can add the &lt;strong&gt;same&lt;/strong&gt; approval prompt UX within your own company's apps with our simple Push SDK that integrates with Apple's and Google's push notification services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond just logins
&lt;/h2&gt;

&lt;p&gt;The tap-to-approve workflow is so useful, why limit it just to two-factor? &lt;/p&gt;

&lt;p&gt;One of the goals of ApproveAPI is to make it easy for developers to request real-time user approvals and secondary verifications for any workflow -- from confirming suspected fraudulent transactions, authenticating users with two-factor verification, verifying identity for customer support, to internal compliance use cases with supervisor approvals and audit logging.&lt;/p&gt;

&lt;p&gt;Let me know what you think below! &lt;/p&gt;

&lt;p&gt;Learn more at &lt;a href="https://approveapi.com"&gt;https://approveapi.com&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QuCkjBlJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/yle5zt46r9246n2ff5by.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QuCkjBlJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/yle5zt46r9246n2ff5by.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;


</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>developertools</category>
      <category>security</category>
    </item>
    <item>
      <title>Prevent phishing on the web with crypto</title>
      <dc:creator>Alex Grinman</dc:creator>
      <pubDate>Wed, 22 Aug 2018 19:48:53 +0000</pubDate>
      <link>https://forem.com/agrinman/prevent-phishing-on-the-web-with-crypto-1a6h</link>
      <guid>https://forem.com/agrinman/prevent-phishing-on-the-web-with-crypto-1a6h</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href="https://krypt.co/blog/posts/prevent-phishing-on-the-web-with-crypto.html"&gt;Originally published on the krypt.co blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No I don't mean crypto-&lt;em&gt;currency&lt;/em&gt;. What I'm really talking about is &lt;strong&gt;Universal 2nd Factor (U2F)&lt;/strong&gt;.  U2F is a protocol for doing two-factor authentication that constructively prevents phishing on the web.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BdQStrD6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mmp979e57d0346w6f0jo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BdQStrD6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mmp979e57d0346w6f0jo.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How does phishing work?
&lt;/h2&gt;

&lt;p&gt;It's very simple -- an attacker gets you to click on a fake link like &lt;code&gt;http://facebo0k.com&lt;/code&gt; or &lt;code&gt;http://dropobox.com&lt;/code&gt;, and the page looks exactly like the real thing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HDcjeF3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b922hm0nmkodfbn7mj8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HDcjeF3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b922hm0nmkodfbn7mj8w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, the attacker's site asks for your username + password. And you enter it. Because it looks legitimate and you're just trying to browse the web like you do everyday. You might think you'll never click on a suspicious link, but what if it comes from a trusted source? Like a compromised facebook or email account of one of your friends?&lt;/p&gt;

&lt;p&gt;When you click enter, you will send your username + password to your attacker and it's game over!&lt;/p&gt;

&lt;h2&gt;
  
  
  I already use two-factor -- I'm invincible!
&lt;/h2&gt;

&lt;p&gt;I've talked to a bunch of folks about this, and the gut reaction is often &lt;em&gt;"I use two-factor so I can't be phished!"&lt;/em&gt; This is actually very wrong, two-factor is just as easy to phish as a username and password -- especially since people are now even more used to entering 2FA codes all the time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cDC4RAD9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/refbuyljgn1iqk09xzx9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cDC4RAD9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/refbuyljgn1iqk09xzx9.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After asking for your username + password, the attacker will simply show you another dialogue to get your two-factor code. It's true that the attacker has minimal time to use the 2nd factor code as it expires quickly, but this can all be automated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Even push-to-approve 2FA like Duo or Google Prompt can be phished
&lt;/h3&gt;

&lt;p&gt;An attacker doesn't need you to enter a code to phish you. They just need to convince you to hit approve on a Duo or Google Prompt style push notification, and you will tap approve because &lt;strong&gt;you think you are logging into the real site and you've been trained to do this&lt;/strong&gt;. Once you tap approve, you will sign the attacker in to your account on their session.&lt;/p&gt;

&lt;h2&gt;
  
  
  U2F Stops Phishing with Crypto
&lt;/h2&gt;

&lt;p&gt;Universal 2nd Factor (U2F) uses public-key cryptography to prevent phishing, automatically. Many sites you use today already support it like: &lt;strong&gt;Facebook, Google, Dropbox, Salesforce, Stripe, GitHub, GitLab, and more.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;There are many different forms of phishing and some are very hard to prevent. However -- credential phishing is something we absolutely can prevent using cryptography. The trick is that the "credential" becomes cryptographically bound to the website that you're &lt;strong&gt;actually&lt;/strong&gt; on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xHOVjLou--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6kjgyo8tjn9lc7oqfd6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xHOVjLou--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6kjgyo8tjn9lc7oqfd6y.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two steps to U2F:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Registration&lt;/strong&gt; Generate a new key pair on an &lt;em&gt;authenticator&lt;/em&gt;. Register the public key with a website, say facebook.com.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;The website's server sends a random &lt;code&gt;challenge&lt;/code&gt; token. &lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;browser&lt;/strong&gt; tells the authenticator the domain that the user is viewing&lt;/li&gt;
&lt;li&gt;Using the private key, the authenticator creates a digital signature of both the &lt;code&gt;challenge&lt;/code&gt; and, most importantly, the domain of the website &lt;strong&gt;that you are actually on&lt;/strong&gt; -- this comes directly, and securely from the browser itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The phishing protection is built in -- the credential that the authenticator spits out is only useful for the owner of the website. A signature for &lt;code&gt;"facebook.com"&lt;/code&gt; cannot be used on &lt;code&gt;"google.com"&lt;/code&gt;. Likewise, a signature for &lt;code&gt;"facebo0k.com"&lt;/code&gt; cannot be used on &lt;code&gt;"facebook.com"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O5LkGpRB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/pzd1h6gcwlfh2nczcnzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O5LkGpRB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/pzd1h6gcwlfh2nczcnzt.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even if the attacker tricked you into producing a signature for their fake website &lt;code&gt;http://facebo0k.com&lt;/code&gt; -- this signature would be useless to them! The real facebook.com would never accept a signature that contains an invalid domain. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That's the point of U2F -- it makes the domain you've visited a part of the cryptographic credential you need to login. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How do I get started?
&lt;/h2&gt;

&lt;p&gt;The first step is to get an authenticator. There are several options. We built Krypton to make it easy for anyone to get become un-phishable on the web. Krypton works on the device you already have -- your phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://get.krypt.co"&gt;Install the Krypton Authenticator&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OfTRoTqn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4b0rqthoouzgl9oep3x9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OfTRoTqn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4b0rqthoouzgl9oep3x9.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Other options
&lt;/h3&gt;

&lt;p&gt;If you don't want to use your phone, you can buy a standalone USB device. I recommend &lt;a href="https://github.com/hillbrad/U2FReviews"&gt;this wonderful guide&lt;/a&gt; for comparing different standalone U2F keys.&lt;/p&gt;

</description>
      <category>security</category>
      <category>2fa</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Spoof a commit on GitHub. From Anyone.</title>
      <dc:creator>Alex Grinman</dc:creator>
      <pubDate>Thu, 02 Aug 2018 17:03:09 +0000</pubDate>
      <link>https://forem.com/agrinman/spoof-a-commit-on-github-from-anyone-4gf4</link>
      <guid>https://forem.com/agrinman/spoof-a-commit-on-github-from-anyone-4gf4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FVFQqkEo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FVFQqkEo.png" width="644" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did you know that anyone can commit as you on GitHub? If you don't believe me, just browse through this repository's &lt;a href="https://github.com/git-forge/fraudulent/commits" rel="noopener noreferrer"&gt;forged commits&lt;/a&gt; or &lt;a href="https://spoof.krypt.co" rel="noopener noreferrer"&gt;use our tool to forge a commit&lt;/a&gt; for yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it for yourself: &lt;a href="https://spoof.krypt.co" rel="noopener noreferrer"&gt;spoof.krypt.co&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fc2y6no7q9zave83ay12p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fc2y6no7q9zave83ay12p.png" width="800" height="488"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxj1k0213nn9nnujn3q7a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxj1k0213nn9nnujn3q7a.png" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How does it work?
&lt;/h2&gt;

&lt;p&gt;Open your &lt;code&gt;~/.gitconfig&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[user]
    name  = Ben Bitdiddle
    email = bbitdiddle@mit.edu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;email&lt;/code&gt; to any value you want.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;email&lt;/code&gt; matches the email of another GitHub user, that user's picture will show up next to the commit, and&lt;br&gt;
when you click on it will take you to their &lt;strong&gt;real&lt;/strong&gt; GitHub profile.&lt;/p&gt;

&lt;p&gt;Next time you see a commit on GitHub from Ben -- don't trust that Ben actually authored it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can do prove that my commits are &lt;em&gt;really&lt;/em&gt; mine?
&lt;/h2&gt;

&lt;p&gt;Anyone can set the “author” of a Git commit to any value. &lt;br&gt;
To prove that you authored a commit you must attach a digital signature to it.&lt;br&gt;
The only way someone knows it was really your commit is to verify the commit's signature. &lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub supports verifying &amp;amp; signing Git commits
&lt;/h2&gt;

&lt;p&gt;Check out this signed commit: &lt;a href="https://github.com/kryptco/kr/commit/0cca333" rel="noopener noreferrer"&gt;kryptco/kr@0cca333&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FS7S3HW6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FS7S3HW6.png" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If a commit doesn’t have a green “Verified” badge, then it could have been authored by anyone!&lt;/p&gt;

&lt;p&gt;GitHub verifies signed commits, and Krypton makes signing commits easy.&lt;br&gt;
Get your green verified badge, &lt;a href="https://krypt.co" rel="noopener noreferrer"&gt;https://krypt.co&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Let's see some well known forgeries...
&lt;/h1&gt;

&lt;p&gt;"I love windows and subversion!" -- &lt;a href="https://github.com/torvalds" rel="noopener noreferrer"&gt;&lt;strong&gt;@torvalds&lt;/strong&gt;&lt;/a&gt; on &lt;a href="https://github.com/git-forge/fraudulent/commit/1eb0d85b5017ced016cdb37897e58ab2c9e5d294" rel="noopener noreferrer"&gt;#1eb0d8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"You should really use gitlab.com, it's way better." -- &lt;a href="https://github.com/schacon" rel="noopener noreferrer"&gt;&lt;strong&gt;@schacon&lt;/strong&gt;&lt;/a&gt; on &lt;a href="https://github.com/git-forge/fraudulent/commit/730c7eebc37c92115a5f886c7cafbb44489b2c97" rel="noopener noreferrer"&gt;#730c7e&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Anonymously Forged Commits
&lt;/h1&gt;

&lt;p&gt;Browse all of the forged commits from the community here! &lt;a href="https://github.com/git-forge/fraudulent/commits/master" rel="noopener noreferrer"&gt;https://github.com/git-forge/fraudulent/commits/master&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>git</category>
      <category>github</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Uncover Bad Network Traffic on your Phone</title>
      <dc:creator>Alex Grinman</dc:creator>
      <pubDate>Fri, 08 Jun 2018 22:14:34 +0000</pubDate>
      <link>https://forem.com/agrinman/uncover-bad-network-traffic-on-your-phone-4f17</link>
      <guid>https://forem.com/agrinman/uncover-bad-network-traffic-on-your-phone-4f17</guid>
      <description>&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/agrinman" rel="noopener noreferrer"&gt;
        agrinman
      &lt;/a&gt; / &lt;a href="https://github.com/agrinman/sift-ios" rel="noopener noreferrer"&gt;
        sift-ios
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Uncover network traffic in real-time for every app on your phone
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/agrinman/sift-iosArtwork/rounded_icon.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fagrinman%2Fsift-iosArtwork%2Frounded_icon.png" width="64" height="64"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Sift app&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Sift shows you what every app on your phone is really doing. Uncover network traffic in real-time for every app on your phone. Create rules to block sites like ads and tracking pages.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inspect network traffic&lt;/li&gt;
&lt;li&gt;Monitor background activity&lt;/li&gt;
&lt;li&gt;Block bad sites and tracking pages&lt;/li&gt;
&lt;li&gt;iOS Developers: debug networking in your live apps&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Sift can answer questions like: are apps tracking me even if I disable analytics? are apps malicious? are they connecting to strange urls? are they doing network activity in the background?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inspect network traffic for any app on your phone&lt;/strong&gt;. Using push notifications, Sift shows you real-time network requests made by other apps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Monitor background activity&lt;/strong&gt;. Sift can even show you what network requests apps are making in the background.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Create rules to block urls like tracking sites, ads, etc&lt;/strong&gt;. Use Sift to block any site you don't like for every…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/agrinman/sift-ios" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Sift shows you what every app on your phone is really doing. Uncover network traffic in real-time for every app on your phone. Create rules to block sites like ads and tracking pages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspect network traffic&lt;/li&gt;
&lt;li&gt;Monitor background activity&lt;/li&gt;
&lt;li&gt;Block bad sites and tracking pages&lt;/li&gt;
&lt;li&gt;iOS Developers: debug networking in your live apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fagrinman%2Fsift-ios%2Fraw%2Fmaster%2Fscreens%2F1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fagrinman%2Fsift-ios%2Fraw%2Fmaster%2Fscreens%2F1.PNG"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fagrinman%2Fsift-ios%2Fraw%2Fmaster%2Fscreens%2F2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fagrinman%2Fsift-ios%2Fraw%2Fmaster%2Fscreens%2F2.PNG"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fagrinman%2Fsift-ios%2Fraw%2Fmaster%2Fscreens%2F3.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fagrinman%2Fsift-ios%2Fraw%2Fmaster%2Fscreens%2F3.PNG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About
&lt;/h2&gt;

&lt;p&gt;Sift can answer questions like: are apps tracking me even if I disable analytics? are apps malicious? are they connecting to strange urls? are they doing network activity in the background?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inspect network traffic for any app on your phone&lt;/strong&gt;. Using push notifications, Sift shows you real-time network requests made by other apps. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitor background activity&lt;/strong&gt;. Sift can even show you what network requests apps are making in the background.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create rules to block urls like tracking sites, ads, etc&lt;/strong&gt;. Use Sift to block any site you don't like for every app on your phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging tool for developers&lt;/strong&gt; Use Sift to debug network traffic for your production app: inspect background activity, see how your app handles connection failures to certain sites, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sift is completely private&lt;/strong&gt; Sift never shares or sends your network traffic data anywhere. Data that Sift collects never leaves your phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why isn't Sift on the App Store?
&lt;/h3&gt;

&lt;p&gt;It turns it out that network content filters are not permitted for regular app store apps (it only works in supervised device mode). So I decided to release the source code instead -- any donations are greatly appreciated :)&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I use it/install it?
&lt;/h3&gt;

&lt;p&gt;Make sure you have XCode installed. Clone the code, open the .xcodeproj, plug in your iPhone, and hit run. You might have to authorize XCode to deploy to your phone/ sign into iCloud in XCode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is there XCode 10 support?
&lt;/h3&gt;

&lt;p&gt;Yep -- just switch to the &lt;code&gt;xcode-10&lt;/code&gt; branch.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>security</category>
      <category>privacy</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
