Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

auto-html

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

auto-html

ES6 Template string function for encoding text to HTML

  • 1.2.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
22
increased by214.29%
Maintainers
1
Weekly downloads
 
Created
Source

autoHtml

GitHub license npm version CircleCI Status Greenkeeper badge

This is a module containing a function to automatically encode Javascript ES6 template strings into HTML safely. This lets you assemble HTML strings yourself but still with automatic safety from XSS attacks!

import autoHtml from "auto-html";

const username = "Bob the XSS guy <script>alert(1)</script>";

const userFormHtml = autoHtml `<div>Username: ${username}</div>`;
console.log(userFormHtml);
// "<div>Username: Bob the XSS guy &lt;script&gt;alert(1)&lt;/script&gt;</div>"

If you really want to substitute in HTML, then use an object with an __html property. Be careful that the html is properly encoded! This syntax is inspired by React.

const username = "Bob the XSS guy <script>alert(1)</script>";
const comment = "Some **markdown** text";

const commentHtml = markdownToHtml(comment); // markdownToHtml not included.
const postHtml = autoHtml `<div class="post">
  <div>Username: ${username}</div>
  <div>${{__html: commentHtml}}</div>
</div>`;
console.log(postHtml);
// <div class="post">
//   <div>Username: Bob the XSS guy &lt;script&gt;alert(1)&lt;/script&gt;</div>
//   <div>Some <strong>markdown</strong> text</div>
// </div>

Miscellaneous

This module is built for use with template strings, a feature of ES6, the next version of Javascript. If you are targeting platforms that don't support template strings natively yet, you may want to use an ES6 compiler like Babel.

This module can be used in browsers via a CommonJS bundler such as Browserify or Webpack.

The HTML encoding is done by Lodash's escape function. Text encoded into HTML by this function is safe to be placed in HTML element attributes and as an element's children.

Use of Content Security Policy headers is highly recommended to prevent XSS attacks! You'll still want to bother to encode your HTML correctly, but CSP headers stop that from being a remote-code-execution security issue at least.

Types

Both TypeScript and Flow type definitions for this module are included! The type definitions won't require any configuration to use.

Keywords

FAQs

Package last updated on 25 Sep 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc