All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.javascript.jscomp.example_conformance_proto.textproto Maven / Gradle / Ivy

# Copyright 2014 The Closure Compiler Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This file contains example JS conformance configurations for various problems
# with JavaScript. Since each project may want to opt-in to different rules, and
# each project may need its own specific whitelist, the examples in this file
# are meant to be copied to a project specific conformance_proto.textproto file.

requirement: {
  type: BANNED_NAME
  error_message: 'eval is not allowed since it can be used to execute '
                 'arbitrary JavaScript code. It is not typically necessary '
                 'in ordinary programming.'

  value: 'eval'

  whitelist: 'javascript/closure/base.js'
  whitelist: 'third_party/javascript/closure/base.js'
  whitelist: 'javascript/closure/json/json.js'
  whitelist: 'third_party/javascript/closure/json/json.js'
}

requirement: {
  type: BANNED_PROPERTY
  error_message: 'Arguments.prototype.callee is not allowed in ES5 Strict mode.'
                 'The JavaScript compiler will also check this when '
                 'CHECK_ES5_STRICT is enabled, but this conformance check also '
                 'warns for possible violations.'

  value: 'Arguments.prototype.callee'

  whitelist: 'javascript/closure/base.js'  # goog.base uses arguments.callee
  whitelist: 'third_party/javascript/closure/base.js'  # goog.base uses arguments.callee
  whitelist: 'javascript/closure/debug/'  # legacy stack trace support, etc
  whitelist: 'third_party/javascript/closure/debug/'  # legacy stack trace support, etc
}

requirement: {
  type: BANNED_PROPERTY_WRITE
  error_message: 'Assignment to Element.prototype.innerHTML is not allowed '
                 'since passing unsafe content can cause XSS vulnerabilities.'
                 'Use goog.dom.safe.setInnerHtml instead.'

  value: 'Element.prototype.innerHTML'

  # Safe wrapper for this property.
  whitelist: 'javascript/closure/dom/safe.js'
  whitelist: 'third_party/javascript/closure/dom/safe.js'

  # Safely used in goog.string.unescapeEntitiesUsingDom_; the string assigned to
  # innerHTML is a single HTML entity.
  whitelist: 'javascript/closure/string/string.js'
  whitelist: 'third_party/javascript/closure/string/string.js'
}

requirement: {
  type: BANNED_PROPERTY_WRITE
  error_message: 'Assignment to Element.prototype.outerHTML is not allowed '
                 'since passing unsafe content can cause XSS vulnerabilities.'
                 'Use goog.dom.safe.setOuterHtml instead.'

  value: 'Element.prototype.outerHTML'

  # Safe wrapper for this property.
  whitelist: 'javascript/closure/dom/safe.js'
  whitelist: 'third_party/javascript/closure/dom/safe.js'
}

requirement: {
  type: BANNED_PROPERTY_WRITE
  error_message: 'Assignment to Location.prototype.href is not allowed. '
                 'Externally controlled content assigned to the href property '
                 'can cause XSS vulnerabilities, such as executing '
                 'javascript:evil() URLs. Use goog.dom.safe.setLocationHref '
                 'instead.'

  value: 'Location.prototype.href'

  # Safe wrapper for this property.
  whitelist: 'javascript/closure/dom/safe.js'
  whitelist: 'third_party/javascript/closure/dom/safe.js'
}

requirement: {
  type: BANNED_PROPERTY_WRITE
  error_message: 'Assignment to Window.prototype.location is not allowed.'
                 'Externally controlled content assigned to the location '
                 'object can cause XSS vulnerabilities, such as executing '
                 'javascript:evil() URLs. Use goog.dom.safe.setLocationHref '
                 'instead.'

  value: 'Window.prototype.location'
}

requirement: {
  type: BANNED_PROPERTY_WRITE
  error_message: 'Assignment to .href property of Anchor, Link, etc elements, '
                 'is not allowed.  Externally controlled content assigned '
                 'to the href property can cause XSS vulnerabilities, such as '
                 'executing javascript:evil() URLs. '
                 'Use goog.dom.safe.setAnchorHref instead.'

  # Types with .href properties that do not extend from Element.
  value: 'StyleSheet.prototype.href'
  value: 'CSSImportRule.prototype.href'

  # All other types extend from Element.
  value: 'Element.prototype.href'

  # Safe wrapper for this property.
  whitelist: 'javascript/closure/dom/safe.js'
  whitelist: 'third_party/javascript/closure/dom/safe.js'
}

requirement: {
  type: BANNED_PROPERTY_WRITE
  error_message: 'Use of document.domain is not allowed since it relaxes the '
                 'the same origin protections of JavaScript and opens up the '
                 'attack surface for the domain.'

  value: 'Document.prototype.domain'
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy