You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Identity Server Security Bug: Unsafe jQuery plugin
The original Identity Server 4 code base has several security bugs detected by CodeQL scanning violating this rule.
Description:
Library plugins, such as those for the jQuery library, are often configurable through options provided by the clients of the plugin. Clients, however, do not know the implementation details of the plugin, so it is important to document the capabilities of each option. The documentation for the plugin options that the client is responsible for sanitizing is of particular importance. Otherwise, the plugin may write user input (for example, a URL query parameter) to a web page without properly sanitizing it first, which allows for a cross-site scripting vulnerability in the client application through dynamic HTML construction.
Document all options that can lead to cross-site scripting attacks, and guard against unsafe inputs where dynamic HTML construction is not intended.
Keep packages up to date with the latest distribution to patch previously discovered vulnerablites.
Review identified issues and guard against unsafe input for each issue.
Example
The following example shows a jQuery plugin that selects a DOM element, and copies its text content to another DOM element. The selection is performed by using the plugin option sourceSelector as a CSS selector.
jQuery.fn.copyText=function(options){// BAD may evaluate `options.sourceSelector` as HTMLvarsource=jQuery(options.sourceSelector),text=source.text();jQuery(this).text(text);}
This is, however, not a safe plugin, since the call to jQuery interprets sourceSelector as HTML if it is a string that starts with <.
Instead of documenting that the client is responsible for sanitizing sourceSelector, the plugin can use jQuery.find to always interpret sourceSelector as a CSS selector:
jQuery.fn.copyText=function(options){// GOOD may not evaluate `options.sourceSelector` as HTMLvarsource=jQuery.find(options.sourceSelector),text=source.text();jQuery(this).text(text);}
Identity Server Security Bug: Unsafe jQuery plugin
The original Identity Server 4 code base has several security bugs detected by CodeQL scanning violating this rule.
Description:
Library plugins, such as those for the jQuery library, are often configurable through options provided by the clients of the plugin. Clients, however, do not know the implementation details of the plugin, so it is important to document the capabilities of each option. The documentation for the plugin options that the client is responsible for sanitizing is of particular importance. Otherwise, the plugin may write user input (for example, a URL query parameter) to a web page without properly sanitizing it first, which allows for a cross-site scripting vulnerability in the client application through dynamic HTML construction.
Examples
Issues
Recommendation
Document all options that can lead to cross-site scripting attacks, and guard against unsafe inputs where dynamic HTML construction is not intended.
Keep packages up to date with the latest distribution to patch previously discovered vulnerablites.
Review identified issues and guard against unsafe input for each issue.
Example
The following example shows a jQuery plugin that selects a DOM element, and copies its text content to another DOM element. The selection is performed by using the plugin option
sourceSelector
as a CSS selector.This is, however, not a safe plugin, since the call to
jQuery
interpretssourceSelector
as HTML if it is a string that starts with<
.Instead of documenting that the client is responsible for sanitizing
sourceSelector
, the plugin can usejQuery.find
to always interpretsourceSelector
as a CSS selector:References
The text was updated successfully, but these errors were encountered: