CS50 Vault

CS50 Vault is a web app at vault.cs50.io that allows you to add authentication to any link, requiring that users authenticate via edX, GitHub, HarvardKey, Princeton CAS, or Yale CAS in order to access it, thereby allowing you to post a link online while still restricting access.

Upon authenticating, a user will be redirected to the link, unless the link can be rendered in an iframe, in which case its URL will be masked. Alternatively, if the link is to a:

  • file on dropbox.com, the link can be customized to trigger an automatic download of the file

  • folder on dropbox.com, the link can be customized to trigger an automatic download of a ZIP of the folder

  • video on youtube.com (or youtu.be), the link can be customized to embed the video in an iframe such that it fills the user’s window and autoplays

Notes

  • After authenticating, a user could theoretically share a link with anyone on the internet (as via email or any other mechanism), thereby allowing others to access it without authentication. However, once accessed by one user, most any digital asset can be shared with (or copied for) others. CS50 Vault simply raises a bar thereto.

  • Embedding a YouTube video in an iframe obfuscates, but does not prevent discovery of, the video’s underlying URL, which is exposed via HTML. After authenticating, a user could theoretically share that link as well.

  • A link will only be rendered in an iframe if it

    • is not served with an X-Frame-Options header,

    • is not served with an Content-Security-Policy header, the value of which contains frame-ancestors, and

    • is served with a Content-Type header, the value of which is application/pdf or text/html.