Skip to content

Commit

Permalink
Sanitize dashboard name input to prevent XSS attack
Browse files Browse the repository at this point in the history
  • Loading branch information
StephenDsouza90 committed Jun 12, 2020
1 parent 0ed7dd7 commit 3feadae
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
10 changes: 8 additions & 2 deletions webapp/graphite/dashboard/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from graphite.dashboard.models import Dashboard, Template
from graphite.dashboard.send_graph import send_graph_email
from graphite.render.views import renderView
from graphite.util import json
from graphite.util import json, sanitize
from graphite.user_util import isAuthenticated

fieldRegex = re.compile(r'<([^>]+)>')
Expand Down Expand Up @@ -224,9 +224,15 @@ def getPermissions(user):
def save(request, name):
if 'change' not in getPermissions(request.user):
return json_response( dict(error="Must be logged in with appropriate permissions to save") )

# Deserialize and reserialize as a validation step
state = str( json.dumps( json.loads( request.POST['state'] ) ) )
state = json.loads(request.POST['state'])
if state.get("name"):
state["name"] = sanitize(state["name"])
state = str(json.dumps(state))

name = sanitize(name)

try:
dashboard = Dashboard.objects.get(name=name)
except Dashboard.DoesNotExist:
Expand Down
9 changes: 9 additions & 0 deletions webapp/graphite/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

from django.conf import settings
from django.utils.timezone import make_aware
from django.utils.html import strip_tags

from graphite.compat import HttpResponse
from graphite.logger import log
Expand Down Expand Up @@ -394,3 +395,11 @@ def parseHost(host_string):

def parseHosts(host_strings):
return [parseHost(host_string) for host_string in host_strings]


def sanitize(string):
"""
Sanitize input string to prevent XSS vulnerability attack.
"""

return strip_tags(string)

0 comments on commit 3feadae

Please sign in to comment.