replaced satinize with sanitize-html

This commit is contained in:
Anna Bodnia
2016-09-01 16:09:44 +03:00
parent 48e7bc1331
commit f87eaaa810
8 changed files with 54 additions and 70 deletions

View File

@@ -32,6 +32,7 @@
"SwaggerUi": false, "SwaggerUi": false,
"jsyaml": false, "jsyaml": false,
"define": false, "define": false,
"sanitizeHtml": false,
// Global object // Global object
// TODO: remove these // TODO: remove these

1
dist/index.html vendored
View File

@@ -12,6 +12,7 @@
<link href='css/print.css' media='print' rel='stylesheet' type='text/css'/> <link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
<script src='lib/object-assign-pollyfill.js' type='text/javascript'></script> <script src='lib/object-assign-pollyfill.js' type='text/javascript'></script>
<script src='lib/sanitize-html.min.js' type='text/javascript'></script>
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script> <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script> <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script> <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>

53
dist/swagger-ui.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6
lib/sanitize-html.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -12,6 +12,7 @@
<link href='css/print.css' media='print' rel='stylesheet' type='text/css'/> <link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
<script src='lib/object-assign-pollyfill.js' type='text/javascript'></script> <script src='lib/object-assign-pollyfill.js' type='text/javascript'></script>
<script src='lib/sanitize-html.min.js' type='text/javascript'></script>
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script> <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script> <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script> <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>

View File

@@ -1,34 +1,22 @@
'use strict'; 'use strict';
/*jslint eqeq: true*/ /*jslint eqeq: true*/
var _sanitize = function(html) { Handlebars.registerHelper('sanitize', function (text) {
// Strip the script tags from the html and inline evenhandlers var result;
html = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');
html = html.replace(/(on\w+="[^"]*")*(on\w+='[^']*')*(on\w+=\w*\(\w*\))*/gi, '');
return html; if (text === undefined) { return ''; }
};
var sanitize =function (html) { result = sanitizeHtml(text, {
var _html; allowedTags: [ 'div', 'span', 'b', 'i', 'em', 'strong', 'a' ],
allowedAttributes: {
if ( _.isUndefined(html) || _.isNull(html)) { 'div': [ 'class' ],
return new Handlebars.SafeString(''); 'span': [ 'class' ],
'a': [ 'href' ]
} }
});
if (_.isNumber(html)) { return new Handlebars.SafeString(result);
return new Handlebars.SafeString(html); });
}
if (_.isObject(html)){
_html = JSON.stringify(html);
return new Handlebars.SafeString(JSON.parse(_sanitize(_html)));
}
return new Handlebars.SafeString(_sanitize(html));
};
Handlebars.registerHelper('sanitize', sanitize);
Handlebars.registerHelper('renderTextParam', function(param) { Handlebars.registerHelper('renderTextParam', function(param) {
var result, type = 'text', idAtt = ''; var result, type = 'text', idAtt = '';
@@ -55,7 +43,7 @@ Handlebars.registerHelper('renderTextParam', function(param) {
idAtt = ' id=\'' + valueId + '\''; idAtt = ' id=\'' + valueId + '\'';
} }
defaultValue = sanitize(defaultValue); defaultValue = sanitizeHtml(defaultValue);
if(isArray) { if(isArray) {
result = '<textarea class=\'body-textarea' + (param.required ? ' required' : '') + '\' name=\'' + name + '\'' + idAtt + dataVendorExtensions; result = '<textarea class=\'body-textarea' + (param.required ? ' required' : '') + '\' name=\'' + name + '\'' + idAtt + dataVendorExtensions;

View File

@@ -96,7 +96,7 @@ SwaggerUi.Views.MainView = Backbone.View.extend({
id = id + '_' + counter; id = id + '_' + counter;
counter += 1; counter += 1;
} }
resource.id = SwaggerUi.utils.sanitize(id); resource.id = sanitizeHtml(id);
resources[id] = resource; resources[id] = resource;
this.addResource(resource, this.model.auths); this.addResource(resource, this.model.auths);
} }