Giter Site home page Giter Site logo

eperegrine / script_sanitizer.js Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 528 KB

A simple npm library to remove script tags but keep other html

Home Page: https://www.npmjs.com/package/script_sanitize

License: MIT License

JavaScript 100.00%
xss regex script-sanitizer security security-tools npm npm-package xss-prevention javascript

script_sanitizer.js's Introduction

script_sanitizer.js

A simple npm library to remove script tags but keep other html

npm Build Status npm npm

Installation

Documention

https://doclets.io/eperegrine/script_sanitizer.js/master

Usage

If on Node.js

const script_sanitize = require('../script_sanitize');
var sanitize = script_sanitize.sanitize;

If on a website

<script href="https://cdn.rawgit.com/eperegrine/script_sanitizer.js/master/dist/script_sanitize.min.js"></script>
<script type="text/javascript">
  var sanitize = script_sanitize.sanitize;
</script>

The method is defined as

sanitize(html, options (optional))

and can be used like so

var sanitized = sanitize("<h1>Hello</h1><script>alert('hi')</script>");
//=> <h1>Hello</h1>
var sanitizedWithReplacment = sanitize("<h1>Hello</h1><script>alert('hi')</script>", { replacementText: "no" });
//=> <h1>Hello</h1>no

Attributes

The default attributes are stored in an array which can be refrenced like:

var attrArray = script_sanitize.defaultAttributes;

and if you wanted to make an attribute exempt you could apply it like so

thanks stack overflow

var newAttrArray = script_sanitize.defaultAttributes;
var exemptIndex = newAttrArray.indexOf("onclick");
newAttrArray.splice(exmptIndex, 1);
sanitize("[HTML STUFF]", { attributes: newAttrArray });

The options parameter

Option Description Default Value
replacementText The text to replace the script tag with ""
loop Whether to replace via looping or a single statement true
replaceEndTagsAfter In certain cases the ending script tag is still there, this options ensures it won't be true
tags The tags that should be replaced ["script"]
attributes The attributes that should be replaced defaultAttributes

Utils

Util Description
isDefined Checks if a variable is defined
defaultFor Sets a default value if a variable is defined
generateRegexForTag Generates a regex object for a tag
generateRegexForEndTag Generates a regex object to check an end tag
generateRegexForAttribute Generates a regex object to check an attribute

License

MIT

Disclaimer

The code uses regex, which has been sourced from here The regex is: /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script\s*>/gi

Although this library will likely be used for security purposes I, the developer, am not responsible if this pacakge doesn't meet your security requirements so use with caution

script_sanitizer.js's People

Contributors

eperegrine avatar

Stargazers

 avatar

Watchers

 avatar  avatar

script_sanitizer.js's Issues

remove scripts from html attributes

have you considered to include support for this?

e.g. <a href="#" onclick="hello()">click me</a>

should result in <a href="#">click me</a>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.