Skip to content

Commit f87eaaa

Browse files
committed
replaced satinize with sanitize-html
1 parent 48e7bc1 commit f87eaaa

File tree

8 files changed

+54
-70
lines changed

8 files changed

+54
-70
lines changed

.jshintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"SwaggerUi": false,
3333
"jsyaml": false,
3434
"define": false,
35+
"sanitizeHtml": false,
3536

3637
// Global object
3738
// TODO: remove these

dist/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
1313

1414
<script src='lib/object-assign-pollyfill.js' type='text/javascript'></script>
15+
<script src='lib/sanitize-html.min.js' type='text/javascript'></script>
1516
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
1617
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
1718
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>

dist/swagger-ui.js

Lines changed: 21 additions & 34 deletions
Large diffs are not rendered by default.

dist/swagger-ui.min.js

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/sanitize-html.min.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/html/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
1313

1414
<script src='lib/object-assign-pollyfill.js' type='text/javascript'></script>
15+
<script src='lib/sanitize-html.min.js' type='text/javascript'></script>
1516
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
1617
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
1718
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>

src/main/javascript/helpers/handlebars.js

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,22 @@
11
'use strict';
22
/*jslint eqeq: true*/
33

4-
var _sanitize = function(html) {
5-
// Strip the script tags from the html and inline evenhandlers
6-
html = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');
7-
html = html.replace(/(on\w+="[^"]*")*(on\w+='[^']*')*(on\w+=\w*\(\w*\))*/gi, '');
4+
Handlebars.registerHelper('sanitize', function (text) {
5+
var result;
86

9-
return html;
10-
};
7+
if (text === undefined) { return ''; }
118

12-
var sanitize =function (html) {
13-
var _html;
14-
15-
if ( _.isUndefined(html) || _.isNull(html)) {
16-
return new Handlebars.SafeString('');
17-
}
18-
19-
if (_.isNumber(html)) {
20-
return new Handlebars.SafeString(html);
21-
}
22-
23-
if (_.isObject(html)){
24-
_html = JSON.stringify(html);
25-
return new Handlebars.SafeString(JSON.parse(_sanitize(_html)));
26-
}
27-
28-
return new Handlebars.SafeString(_sanitize(html));
29-
};
9+
result = sanitizeHtml(text, {
10+
allowedTags: [ 'div', 'span', 'b', 'i', 'em', 'strong', 'a' ],
11+
allowedAttributes: {
12+
'div': [ 'class' ],
13+
'span': [ 'class' ],
14+
'a': [ 'href' ]
15+
}
16+
});
3017

31-
Handlebars.registerHelper('sanitize', sanitize);
18+
return new Handlebars.SafeString(result);
19+
});
3220

3321
Handlebars.registerHelper('renderTextParam', function(param) {
3422
var result, type = 'text', idAtt = '';
@@ -55,7 +43,7 @@ Handlebars.registerHelper('renderTextParam', function(param) {
5543
idAtt = ' id=\'' + valueId + '\'';
5644
}
5745

58-
defaultValue = sanitize(defaultValue);
46+
defaultValue = sanitizeHtml(defaultValue);
5947

6048
if(isArray) {
6149
result = '<textarea class=\'body-textarea' + (param.required ? ' required' : '') + '\' name=\'' + name + '\'' + idAtt + dataVendorExtensions;

src/main/javascript/view/MainView.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ SwaggerUi.Views.MainView = Backbone.View.extend({
9696
id = id + '_' + counter;
9797
counter += 1;
9898
}
99-
resource.id = SwaggerUi.utils.sanitize(id);
99+
resource.id = sanitizeHtml(id);
100100
resources[id] = resource;
101101
this.addResource(resource, this.model.auths);
102102
}

0 commit comments

Comments
 (0)