EDIT:
Joined with Github, went through the password handling section, then saw this:
http://i.imgur.com/H4h5FUY.png
No no no no NO! Do NOT use SHA256 for passwords.
https://paragonie.com/blog/2016/02/how-safely-store-password...
https://codahale.com/how-to-safely-store-a-password/
PBKDF2-SHA256 with 100k or more iterations? Okay, fine.
SHA256 the cryptographic hash function not designed for password storage? Bad advice.
"/><script> <script>alert(0)</script>
All the live updating that module does, I figured there might be some code injection.Blacklist input validation as defense against XSS? Are you kidding me? And then over to session fixation, where I see the exact same ?jessionid=blah example that has been in any Web Security book for the last 10-15 years? Come on!
Where are you seeing that? The advice I can see talks about escaping HTML rather than blacklisting input validation: https://www.hacksplaining.com/prevention/xss-stored
Unfortunately it doesn't discuss escaping Javascript nor CSS. But it least it covers the most common case.
I don't see how the length of time the reset link is valid really has any bearing here. I'm assuming the implication is that an attack could search for old password reset emails but if they have access to the email account, why not just request another reset?
Not sure about the business model yet, though it's peaked some interest here and on /r/programming, so I figure there's an appetite for good training material.