Apparently CodePen 2.0 sends data to their servers as you type

Posted by maxim-fin 21 hours ago

Counter111Comment56OpenOriginal

They send all typed into editor input to codepen.dev almost immediately (you would see in 1-2 sec after you typed your secret that it appears in respective Network/Response tab) even before one saved it. I tested this with a unique marker: after typing it into index.html, CodePen ran a build with "save:false", and the marker then appeared verbatim in the HTML served from the generated "*.codepen.dev preview". Thus, if you ever entered some secrets in there by mistake consider them compromized even if you did not publish/save the pen

Comments

Comment by giancarlostoro 18 hours ago

Pretty sure it always autosaved so this makes sense to me? I always assume it would send my data over to their backend, its code that ends up there regardless?

Comment by maxim-fin 17 hours ago

Yes, that is for autosave and for rendering

Edit: The point is that any secrets typed/pasted in there should be considered compromized

Comment by giancarlostoro 17 hours ago

I don't know why anyone would paste or type secrets into codepen which is public by default... But it always seemed like it auto-saved / sent your code over to the back-end, going back ten years roughly?

Comment by traviswingo 16 hours ago

Copy -> paste -> redact secrets

That flow would be considered unsafe, and probably common.

Comment by leptons 13 hours ago

It's also a foolish thing to do. Any time anyone types anything into anywhere on any webpage, that data is as good as gone, it's out there. Back in the 90's I experimented with per-character logging on all form input boxes, just because I could. That's still possible today.

Comment by maxim-fin 16 hours ago

This is exactly the scenario I pictured

Comment by giancarlostoro 16 hours ago

If you are pasting secrets into codepen you are probably really terrible at all other basic security practices.

Comment by 17 hours ago

Comment by tvink 20 hours ago

You're gonna be shocked how many input fields do this for various UX features :)

Comment by nusl 19 hours ago

Shopify does this. If you ever go to purchase a product on a Shopify 'site, and enter eg your e-mail address, it'll save it even if you decide to cancel and close the tab. Sometimes you receive spam from companies along the lines of marketing or "we noticed you didn't complete your purchase" type crap. Shit is rly invasive.

Comment by davidmurdoch 18 hours ago

They can only send the marketing emails if you have the "send me marketing emails" checkbox checked when you type in your email address. Dark pattern, yeah.

Comment by xingped 14 hours ago

That has never stopped companies from spamming me with marketing even when I didn't agree or even explicitly disagreed (unchecked). Not a single company has been or ever will be held accountable so they just keep doing it.

Comment by davidmurdoch 14 hours ago

Shopify 's "abandoned cart" emails are legally considered transactional emails, not marketing, which is probably what you're getting. It's a feature built in to Shopify. If the email isn't related to your abandoned cart contents, you can report it to Shopify. Shopify will investigate reports of abuse and eventually will terminate a store account for blatant abuse.

Comment by aveao 14 hours ago

Isn't the email at the top of the form and the marketing checkbox at the bottom? It's an awful dark pattern and makes me want to not use any company that uses shopify.

They require your full address to show you shipping prices as well (vs just letting you estimate with country and postal code alone), so I have to punch in a ton of details before I nope out at awful shipping costs, and I end up with these emails.

Comment by davidmurdoch 14 hours ago

No. For Shopify's checkout, it's directly beneath the email input.

You're probably getting the "abandon cart" emails, which is legally considered a "transactional email", and doesn't require consent.

Comment by weezing 18 hours ago

Simplelogin is a godsend for this cancer

Comment by Boss0565 18 hours ago

Have you checked to see if it’s stored in localstorage

Comment by masfuerte 18 hours ago

If they are sending you emails the address is not just in localstorage.

Comment by embedding-shape 20 hours ago

HotJar and similar services are (were?) popular as well, and those record your mouse pointer movements and clicks as well, then displays that as an overlay over the application, so it's essentially a "screen recording" of your session of the application.

Comment by maxim-fin 18 hours ago

Not sure if they are still popular but in the past they may have really slowed down the site

Comment by glub 18 hours ago

Now it's an entire industry. They call it "bot protection"

Comment by crisnoble 12 hours ago

Wait until you see a microsoft clarity recording.

Comment by maxim-fin 18 hours ago

Yes, but codepen is for frontend devs. And devs are more likely to accidentally leak secrets because, well, they have them

Edit: accidantlay -> accidentally

Comment by millerm 13 hours ago

Reddit does this. Every keystroke you type into a comment box is sent back to them. So, that means even if you decided to cancel posting something, they still receive what you wrote. I have been known to write responses that were harsh and angry, and I simply don't send. Sometimes it's therapy for me to think through something while typing whatever is in my head. Then I go back and edit once I have have thought it through. I don't want that info sent back. So, I tend to not involve myself with much online anymore. I don't want to expose myself to the thought police.

I find the browser the most unsafe piece of tech deployed.

Comment by c-hendricks 13 hours ago

Ever since I learned about full story / datadog RUM I've been writing my replies in a notes app then copy and pasting back in the browser

Comment by maxim-fin 18 hours ago

CodePen does not disclose this in neither ToS nor in Privacy Policy, only in Builds documentation they say: “As you work on CodePen, your Pens are constantly running through the CodePen Compiler”

Comment by nseskin 20 hours ago

There’s a detailed discussion of the same issue here https://www.reddit.com/r/webdev/comments/1rj1oac/i_planted_f...

Comment by maxim-fin 18 hours ago

Indeed, it looks like CodePen v1 was sending data to codepen.io, cpwebassets.codepen.io, and cdpn.io. Now v2 sends to codepen.dev

Comment by quietraster 14 hours ago

the 'it's just autosave' defense in the comments is interesting. is keystroke-level granularity actually needed for that though?

Comment by mkgiga 11 hours ago

I think what's more interesting is if privacy is the concern, why does the timing matter? The same data is getting saved either way.

Actually never mind, you aren't sending them private information anyway so it's not a privacy concern in the first place.

Comment by aveao 14 hours ago

Reads to me like it's debounced to a few seconds after you stopped typing.

Comment by maxim-fin 13 hours ago

Good point

Comment by midnitewarrior 19 hours ago

Look into https://www.fullstory.com/ , many major websites use this, it's basically a real-time video view of the user's browser screen. You can see where they move their mouse, how quickly they are typing, each character one at a time.

I worked for a company that would have phone support for users, and we'd be watching their screens giving gentle suggestions to them as they were using our app for how to do what they needed to do. We never offered up what we were doing, but given users' poor descriptions of what they were doing, FullStory was an amazing customer service tool.

Comment by VoidWhisperer 18 hours ago

Something like this would've been incredibly useful at my previous job - we often had to put together how a user triggered an issue using a combination of logs and analytics to track what actions they took..

Comment by giancarlostoro 18 hours ago

Elastic has something like this too, as does Splunk iirc. Idk how all three compare I just know they can track DOM events type of stuff and recreate a flow video.

Comment by 17 hours ago

Comment by maxim-fin 18 hours ago

interesting!

Comment by cph123 20 hours ago

For basic previewing I like to use https://htmledit.squarefree.com which has been online for years and does it all client side.

Comment by keepo404 20 hours ago

because this is how autocomplete logic works i guess? Frontend cannot guess language and completions for you

Comment by mkgiga 11 hours ago

yes it can. all you need are some tokenizers for the languages you want to guess and once you derived the language, a few lookup tables to store variable name references in :)

Comment by giancarlostoro 18 hours ago

Yeah I remember CodePen refreshing for me plenty of times.

Comment by maxim-fin 20 hours ago

No autocomplete involved there.

Comment by embedding-shape 20 hours ago

Well, except for the cases when you happen to have the entire VM for your language running in the same tab where you program lives, and they both are all JS.

Probably harder, and wouldn't work equally well for everyone, but it would be possible to have "guess language and autocomplete" entirely client-side, especially when it comes to JavaScript of all languages.

Comment by odo1242 19 hours ago

It seems like the main disadvantage would be that you have to load all the autocomplete data / model weights on the client-side and your webpage might be CPU/memory limited

Comment by embedding-shape 19 hours ago

> main disadvantage would be that you have to load all the autocomplete data / model weights on the client-side

Not sure what "model weights" you're talking about, but yes, that is the trade-off. Although complete autocomplete data for the entirely of the JavaScript APIs would be what, in an efficient format, easily below 1MB at least.

Comment by mkgiga 11 hours ago

Code editor autocomplete doesn't use ai — search up LSP

Comment by dbushell 14 hours ago

I'm looking forward to the Gamers Nexus exposé

Comment by bashy 20 hours ago

Sent to them to render the preview pane. Same as pasting secrets anywhere on a browser.

Wait until you find out copying content on a computer might sent it over Wi-Fi/Bluetooth for sharing on other devices.

Comment by maxim-fin 20 hours ago

Yes, that is for rendering Edit: and as "kypro" pointed out also for saving the current work but if you you quit (or crash) without saving the pen there is no way to recover unsaved work regardless

Comment by mkgiga 11 hours ago

if you paste secrets in any website you should be fired immediately

Comment by pdyc 20 hours ago

i made my own html playground that is browser only and shares preview via url hash because of these useless shenanigans of codepen, its not as featureful but i mostly use it for sharing single page html files

https://easyanalytica.com/tools/html-playground/

Comment by kypro 18 hours ago

This is so it can restore any unsaved changes.

I take no opinion on whether this is good or bad, but I can see how from a UX perspective it's nice not to lose 10 minutes of work because your browser crashes or something.

Comment by maxim-fin 18 hours ago

Yes, absolutely, there are good reasons for that. The point is that any secrets typed/pasted in there should be considered compromized

Edit: but then if you you quit (or crash) without saving the pen first there is no way to recover unsaved work regardless. That is, the pen must be saved manually at least once for the user to benefit from the autosave.

Comment by phyzome 15 hours ago

Secrets pasted into any web page should be considered compromised.

Comment by mkgiga 11 hours ago

please don't paste credentials into codepen

Comment by 20 hours ago

Comment by tmpsvc2695f5 7 hours ago

[dead]

Comment by qsbuilder 16 hours ago

[dead]

Comment by tryka7966 13 hours ago

[dead]

Comment by tmpsvc2695f5 19 hours ago

[dead]

Comment by alfredo359 17 hours ago

[dead]

Comment by cetinsert 20 hours ago

[flagged]

Comment by sejje 19 hours ago

It's obviously very fun; look at all the exclamation points.

Comment by dakolli 19 hours ago

Did you make this post under a sock acct just to promote this?

Comment by sejje 19 hours ago

Sock account from 2013?

Comment by 17 hours ago