Giter VIP home page Giter VIP logo

zxcvbn-api's Introduction

Web API built with Node and Express. It wraps Dropbox's zxcvbn library just in case you need to verify a password's strength on both the client and server with a guarantee of the same result from both.

Environmental config

Node.js must be installed.

Optionally, Docker and/or cURL

Initial app config

npm install

Testing

npm test

Starting app

For normal people

npm start

npm run start:dev for automatic node restart when code changes.

For studs

npm run docker:start

Available API's

POST is required for security reasons. Think of the call as a request to create a strength estimation. API assumes SSL protocol.

POST /zxcvbn

Request body

{
    "password": "horsebatterystaple"
}

Returns

zxcvbn result described here

POST /zxcvbn/score

Request body

{
    "password": "horsebatterystaple"
}

Returns

{
    "score": [0-4]
}

Testing

curl -H "Content-Type: application/json" -X POST -d '{"password":"asdfghgfd"}' http://localhost:3000/zxcvbn/score

Stopping app

Ctrl-c if started with npm start or npm run start:dev

npm run docker:stop if started with npm run docker:start

Additional resources

Docker image

Why a strength estimator?

Looking for a PHP client?

zxcvbn-api's People

Contributors

longrunningprocess avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

zxcvbn-api's Issues

Enhancements

If the intent is to really turn this into a backing service, should probably add the following.

  • Add CORS support (cross origin)
  • Size limit for body parser (5kb should be way more than enough), will prevent some flooding/injection attacks
  • Add error handler to return JSON, good for all API interfaces to return errors in the common format used by the API itself. Errors should return an object, with a single error property, with at least a code (corresponding to http status code, and message, containing error text, and optionally other error properties).
{ // single object response, with single property of "error"
  error: {
    code: 400 //invalid input, or 5xx for other errors
    ,message: error.message // original or custom error message
    ,...error // other properties from error, message is part of inheritance and doesn't serialize
  }
}

Possible value-adds:

  • Wrap zxcvbn request processing into a pool limited to PROCESSOR_COUNT instances, so that you can avert some flooding scenarios.
  • Add xdomain proxy.html so that xdomain can be used with old IE in order to use the service.

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.