-
Notifications
You must be signed in to change notification settings - Fork 39
Update mdx.py #161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update mdx.py #161
Conversation
This fixes an unescaped user input vulnerability
2 similar comments
| from .i18n import language | ||
| from . import samlmd | ||
| import six | ||
| from cgi import escape |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://docs.python.org/3/library/cgi.html#cgi.escape
Deprecated since version 3.2: This function is unsafe because quote is false by default, and therefore deprecated. Use html.escape() instead.
Maybe, we should use just html.escape
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did, but it is only available from 3.2 and pyFF is still in 2.7 land...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pyFF is 3.x and 2.x - all builds are built on 2.7, 3.5, 3.6, 3.7 - is there a six move we can use?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe in master now, but our deploy is still a 2.7 venv. I expect many others are, due to legacy. Do you want to break all those installations without warning?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah sorry. I took your comment to mean that pyFF didn't do 3.x but you meant that pyFF still needs to maintain backwards compat with 2.x.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know six-fu, please consider this PR a best-effort favor to the community...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
import six
if six.PY2:
from cgi import escape
else:
from html import escapeThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But is this compatible with the quote=True named parameter in the call later for html.escape?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, both interfaces are the same. The difference is that the default value for the quote parameter is False for cgi.escpae and True for html.escape. Setting the quote parameter yourself works for both modules ;-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm fine merging this and fixing the six move myself
|
I will!
|
|
Kudos to Tirtha Mandal mandaltirtha17@gmail.com and Jonas Lejon jonas@triop.se who independently discovered this. Closes #160 |
This fixes an unescaped user input vulnerability