You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					204 lines
				
				5.3 KiB
			
		
		
			
		
	
	
					204 lines
				
				5.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * xss
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @author Zongmin Lei<leizongmin@gmail.com>
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare module "xss" {
							 | 
						||
| 
								 | 
							
								  global {
							 | 
						||
| 
								 | 
							
								    function filterXSS(html: string, options?: IFilterXSSOptions): string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    namespace XSS {
							 | 
						||
| 
								 | 
							
								      export interface IFilterXSSOptions {
							 | 
						||
| 
								 | 
							
								        allowList?: IWhiteList;
							 | 
						||
| 
								 | 
							
								        whiteList?: IWhiteList;
							 | 
						||
| 
								 | 
							
								        onTag?: OnTagHandler;
							 | 
						||
| 
								 | 
							
								        onTagAttr?: OnTagAttrHandler;
							 | 
						||
| 
								 | 
							
								        onIgnoreTag?: OnTagHandler;
							 | 
						||
| 
								 | 
							
								        onIgnoreTagAttr?: OnTagAttrHandler;
							 | 
						||
| 
								 | 
							
								        safeAttrValue?: SafeAttrValueHandler;
							 | 
						||
| 
								 | 
							
								        escapeHtml?: EscapeHandler;
							 | 
						||
| 
								 | 
							
								        stripIgnoreTag?: boolean;
							 | 
						||
| 
								 | 
							
								        stripIgnoreTagBody?: boolean | string[];
							 | 
						||
| 
								 | 
							
								        allowCommentTag?: boolean;
							 | 
						||
| 
								 | 
							
								        stripBlankChar?: boolean;
							 | 
						||
| 
								 | 
							
								        css?: {} | boolean;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      interface IWhiteList extends Record<string, string[] | undefined> {
							 | 
						||
| 
								 | 
							
								        a?: string[];
							 | 
						||
| 
								 | 
							
								        abbr?: string[];
							 | 
						||
| 
								 | 
							
								        address?: string[];
							 | 
						||
| 
								 | 
							
								        area?: string[];
							 | 
						||
| 
								 | 
							
								        article?: string[];
							 | 
						||
| 
								 | 
							
								        aside?: string[];
							 | 
						||
| 
								 | 
							
								        audio?: string[];
							 | 
						||
| 
								 | 
							
								        b?: string[];
							 | 
						||
| 
								 | 
							
								        bdi?: string[];
							 | 
						||
| 
								 | 
							
								        bdo?: string[];
							 | 
						||
| 
								 | 
							
								        big?: string[];
							 | 
						||
| 
								 | 
							
								        blockquote?: string[];
							 | 
						||
| 
								 | 
							
								        br?: string[];
							 | 
						||
| 
								 | 
							
								        caption?: string[];
							 | 
						||
| 
								 | 
							
								        center?: string[];
							 | 
						||
| 
								 | 
							
								        cite?: string[];
							 | 
						||
| 
								 | 
							
								        code?: string[];
							 | 
						||
| 
								 | 
							
								        col?: string[];
							 | 
						||
| 
								 | 
							
								        colgroup?: string[];
							 | 
						||
| 
								 | 
							
								        dd?: string[];
							 | 
						||
| 
								 | 
							
								        del?: string[];
							 | 
						||
| 
								 | 
							
								        details?: string[];
							 | 
						||
| 
								 | 
							
								        div?: string[];
							 | 
						||
| 
								 | 
							
								        dl?: string[];
							 | 
						||
| 
								 | 
							
								        dt?: string[];
							 | 
						||
| 
								 | 
							
								        em?: string[];
							 | 
						||
| 
								 | 
							
								        figure?: string[];
							 | 
						||
| 
								 | 
							
								        figcaption?: string[];
							 | 
						||
| 
								 | 
							
								        font?: string[];
							 | 
						||
| 
								 | 
							
								        footer?: string[];
							 | 
						||
| 
								 | 
							
								        h1?: string[];
							 | 
						||
| 
								 | 
							
								        h2?: string[];
							 | 
						||
| 
								 | 
							
								        h3?: string[];
							 | 
						||
| 
								 | 
							
								        h4?: string[];
							 | 
						||
| 
								 | 
							
								        h5?: string[];
							 | 
						||
| 
								 | 
							
								        h6?: string[];
							 | 
						||
| 
								 | 
							
								        header?: string[];
							 | 
						||
| 
								 | 
							
								        hr?: string[];
							 | 
						||
| 
								 | 
							
								        i?: string[];
							 | 
						||
| 
								 | 
							
								        img?: string[];
							 | 
						||
| 
								 | 
							
								        ins?: string[];
							 | 
						||
| 
								 | 
							
								        li?: string[];
							 | 
						||
| 
								 | 
							
								        mark?: string[];
							 | 
						||
| 
								 | 
							
								        nav?: string[];
							 | 
						||
| 
								 | 
							
								        ol?: string[];
							 | 
						||
| 
								 | 
							
								        p?: string[];
							 | 
						||
| 
								 | 
							
								        pre?: string[];
							 | 
						||
| 
								 | 
							
								        s?: string[];
							 | 
						||
| 
								 | 
							
								        section?: string[];
							 | 
						||
| 
								 | 
							
								        small?: string[];
							 | 
						||
| 
								 | 
							
								        span?: string[];
							 | 
						||
| 
								 | 
							
								        sub?: string[];
							 | 
						||
| 
								 | 
							
								        sup?: string[];
							 | 
						||
| 
								 | 
							
								        strong?: string[];
							 | 
						||
| 
								 | 
							
								        strike?: string[];
							 | 
						||
| 
								 | 
							
								        summary?: string[];
							 | 
						||
| 
								 | 
							
								        table?: string[];
							 | 
						||
| 
								 | 
							
								        tbody?: string[];
							 | 
						||
| 
								 | 
							
								        td?: string[];
							 | 
						||
| 
								 | 
							
								        tfoot?: string[];
							 | 
						||
| 
								 | 
							
								        th?: string[];
							 | 
						||
| 
								 | 
							
								        thead?: string[];
							 | 
						||
| 
								 | 
							
								        tr?: string[];
							 | 
						||
| 
								 | 
							
								        tt?: string[];
							 | 
						||
| 
								 | 
							
								        u?: string[];
							 | 
						||
| 
								 | 
							
								        ul?: string[];
							 | 
						||
| 
								 | 
							
								        video?: string[];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      type OnTagHandler = (
							 | 
						||
| 
								 | 
							
								        tag: string,
							 | 
						||
| 
								 | 
							
								        html: string,
							 | 
						||
| 
								 | 
							
								        options: {
							 | 
						||
| 
								 | 
							
								          sourcePosition?: number;
							 | 
						||
| 
								 | 
							
								          position?: number;
							 | 
						||
| 
								 | 
							
								          isClosing?: boolean;
							 | 
						||
| 
								 | 
							
								          isWhite?: boolean;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      ) => string | void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      type OnTagAttrHandler = (
							 | 
						||
| 
								 | 
							
								        tag: string,
							 | 
						||
| 
								 | 
							
								        name: string,
							 | 
						||
| 
								 | 
							
								        value: string,
							 | 
						||
| 
								 | 
							
								        isWhiteAttr: boolean
							 | 
						||
| 
								 | 
							
								      ) => string | void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      type SafeAttrValueHandler = (
							 | 
						||
| 
								 | 
							
								        tag: string,
							 | 
						||
| 
								 | 
							
								        name: string,
							 | 
						||
| 
								 | 
							
								        value: string,
							 | 
						||
| 
								 | 
							
								        cssFilter: ICSSFilter
							 | 
						||
| 
								 | 
							
								      ) => string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      type EscapeHandler = (str: string) => string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      interface ICSSFilter {
							 | 
						||
| 
								 | 
							
								        process(value: string): string;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  export interface IFilterXSSOptions extends XSS.IFilterXSSOptions {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export interface IWhiteList extends XSS.IWhiteList {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export type OnTagHandler = XSS.OnTagHandler;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export type OnTagAttrHandler = XSS.OnTagAttrHandler;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export type SafeAttrValueHandler = XSS.SafeAttrValueHandler;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export type EscapeHandler = XSS.EscapeHandler;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export interface ICSSFilter extends XSS.ICSSFilter {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export function StripTagBody(
							 | 
						||
| 
								 | 
							
								    tags: string[],
							 | 
						||
| 
								 | 
							
								    next: () => void
							 | 
						||
| 
								 | 
							
								  ): {
							 | 
						||
| 
								 | 
							
								    onIgnoreTag(
							 | 
						||
| 
								 | 
							
								      tag: string,
							 | 
						||
| 
								 | 
							
								      html: string,
							 | 
						||
| 
								 | 
							
								      options: {
							 | 
						||
| 
								 | 
							
								        position: number;
							 | 
						||
| 
								 | 
							
								        isClosing: boolean;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    ): string;
							 | 
						||
| 
								 | 
							
								    remove(html: string): string;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export class FilterXSS {
							 | 
						||
| 
								 | 
							
								    constructor(options?: IFilterXSSOptions);
							 | 
						||
| 
								 | 
							
								    process(html: string): string;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  export function filterXSS(html: string, options?: IFilterXSSOptions): string;
							 | 
						||
| 
								 | 
							
								  export function parseTag(
							 | 
						||
| 
								 | 
							
								    html: string,
							 | 
						||
| 
								 | 
							
								    onTag: (
							 | 
						||
| 
								 | 
							
								      sourcePosition: number,
							 | 
						||
| 
								 | 
							
								      position: number,
							 | 
						||
| 
								 | 
							
								      tag: string,
							 | 
						||
| 
								 | 
							
								      html: string,
							 | 
						||
| 
								 | 
							
								      isClosing: boolean
							 | 
						||
| 
								 | 
							
								    ) => string,
							 | 
						||
| 
								 | 
							
								    escapeHtml: EscapeHandler
							 | 
						||
| 
								 | 
							
								  ): string;
							 | 
						||
| 
								 | 
							
								  export function parseAttr(
							 | 
						||
| 
								 | 
							
								    html: string,
							 | 
						||
| 
								 | 
							
								    onAttr: (name: string, value: string) => string
							 | 
						||
| 
								 | 
							
								  ): string;
							 | 
						||
| 
								 | 
							
								  export const whiteList: IWhiteList;
							 | 
						||
| 
								 | 
							
								  export function getDefaultWhiteList(): IWhiteList;
							 | 
						||
| 
								 | 
							
								  export const onTag: OnTagHandler;
							 | 
						||
| 
								 | 
							
								  export const onIgnoreTag: OnTagHandler;
							 | 
						||
| 
								 | 
							
								  export const onTagAttr: OnTagAttrHandler;
							 | 
						||
| 
								 | 
							
								  export const onIgnoreTagAttr: OnTagAttrHandler;
							 | 
						||
| 
								 | 
							
								  export const safeAttrValue: SafeAttrValueHandler;
							 | 
						||
| 
								 | 
							
								  export const escapeHtml: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const escapeQuote: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const unescapeQuote: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const escapeHtmlEntities: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const escapeDangerHtml5Entities: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const clearNonPrintableCharacter: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const friendlyAttrValue: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const escapeAttrValue: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export function onIgnoreTagStripAll(): string;
							 | 
						||
| 
								 | 
							
								  export const stripCommentTag: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const stripBlankChar: EscapeHandler;
							 | 
						||
| 
								 | 
							
								  export const cssFilter: ICSSFilter;
							 | 
						||
| 
								 | 
							
								  export function getDefaultCSSWhiteList(): ICSSFilter;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const xss: (html: string, options?: IFilterXSSOptions) => string;
							 | 
						||
| 
								 | 
							
								  export default xss;
							 | 
						||
| 
								 | 
							
								}
							 |