{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:25:03.340713Z","repo":{"ref":{"host":"github.com","owner":"geekcompany","name":"DeerResume"},"default_branch":"master","clone_url":"https://github.com/geekcompany/DeerResume.git","html_url":"https://github.com/geekcompany/DeerResume","description":"MarkDown在线简历工具，可在线预览、编辑和生成PDF。[此项目已不再维护，建议使用 cv.ftqq.com 替代 ]","stars":3455,"forks":815,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":1182,"primary_language":"JavaScript","license_spdx":null,"created_at":"2014-09-08T02:26:04Z","pushed_at":"2018-05-07T12:47:56Z","security_policy_url":null,"distribution":{"owner_created_at":"2014-04-23T04:59:14Z","owner_type":"Organization","release_assets":[]}},"commit_sha":"6f7b09b3adf07c0fc1be0ff964cbe36af5676502","profile":{"lines_by_language":{"JavaScript":20374,"PHP":30},"files_by_category":{"source":115,"other":96,"config":22,"vendored":18,"docs":15,"binary":13},"source_lines":20404,"test_lines":0},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.47,"coverage":1.0,"label":"none-detected","breakdown":{"attributed_share":0.0,"suspected_share":0.0,"estimated_share":0.0,"ai_artifacts":0.0,"flagged_work_units":0.0,"flagged_releases":null},"summary":"No AI attribution or AI-consistent velocity signals detected."},"quality":{"score":40.5,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":59.2,"duplication":28.6,"lint":95.5,"testing":0.0,"docs":40.0,"type_safety":null,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 18% of function code in complex or long functions; 21% duplicated lines. Weakest area: testing."},"security":{"score":67.7,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":61.1,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 8 high-severity SAST findings. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":34.0,"checked":34.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":29.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":20418.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2014-09":{"loc":20398,"attributed_loc":0},"2014-10":{"loc":20,"attributed_loc":0},"2015-09":{"loc":0,"attributed_loc":0},"2016-08":{"loc":0,"attributed_loc":0},"2017-03":{"loc":0,"attributed_loc":0},"2017-10":{"loc":0,"attributed_loc":0},"2017-11":{"loc":0,"attributed_loc":0},"2018-03":{"loc":0,"attributed_loc":0},"2018-05":{"loc":0,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":3.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":57.0,"pre_ai_era_burst_loc":0.0,"measured_loc":57.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":8.5,"median_loc_per_hour":0.0,"pr_timed_units":0.0,"excluded_import_loc":14425.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":["a698230a1717bb4dcab9a76781947055ce52d712"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":20404.0,"index":0.343,"count:narrated_steps":7.0,"per_kloc:narrated_steps":0.343,"files:narrated_steps":3.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, we save the current length","ref":"bower/components/jquery/src/callbacks.js:96","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/callbacks.js#L96","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, attempt to store a copy or reference of any","ref":"bower/components/jquery/src/data.js:152","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/data.js#L152","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, look for nested blocks, e.g.:","ref":"bower/components/showdown/src/showdown.js:331","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/showdown/src/showdown.js#L331","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, handle reference-style links: [link text] [id]","ref":"bower/components/showdown/src/showdown.js:538","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/showdown/src/showdown.js#L538","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Next, inline-style links: [link text](url \"optional title\")","ref":"bower/components/showdown/src/showdown.js:566","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/showdown/src/showdown.js#L566","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, handle reference-style labeled images: ![alt text][id]","ref":"bower/components/showdown/src/showdown.js:670","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/showdown/src/showdown.js#L670","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Next, handle inline images:  ![alt text](url \"optional title\")","ref":"bower/components/showdown/src/showdown.js:692","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/showdown/src/showdown.js#L692","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":99.0,"findings_high":8.0,"findings_medium":91.0,"findings_low":0.0,"weighted_findings":28.75,"scanned_lines":20404.0,"parse_errors":2.0},"findings":[{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/angular-sanitize/angular-sanitize.js","line":403,"fingerprint":"javascript.browser.security.insecure-document-method:bower/components/angular-sanitize/angular-sanitize.js:403"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `hiddenPre.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/angular-sanitize/angular-sanitize.js","line":403,"fingerprint":"javascript.browser.security.insecure-innerhtml:bower/components/angular-sanitize/angular-sanitize.js:403"},{"rule_id":"opengrep/javascript.express.security.audit.remote-property-injection","severity":"high","message":"Bracket object notation with user input is present, this might allow an attacker to access all properties of the object and even it's prototype. Use literal values for object properties. [confidence low]","path":"bower/components/jquery/src/dimensions.js","line":32,"fingerprint":"javascript.express.security.audit.remote-property-injection:bower/components/jquery/src/dimensions.js:32"},{"rule_id":"opengrep/javascript.express.security.audit.remote-property-injection","severity":"high","message":"Bracket object notation with user input is present, this might allow an attacker to access all properties of the object and even it's prototype. Use literal values for object properties. [confidence low]","path":"bower/components/jquery/src/dimensions.js","line":33,"fingerprint":"javascript.express.security.audit.remote-property-injection:bower/components/jquery/src/dimensions.js:33"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/manipulation.js","line":220,"fingerprint":"javascript.browser.security.insecure-document-method:bower/components/jquery/src/manipulation.js:220"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `tmp.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/manipulation.js","line":220,"fingerprint":"javascript.browser.security.insecure-innerhtml:bower/components/jquery/src/manipulation.js:220"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/manipulation.js","line":429,"fingerprint":"javascript.browser.security.insecure-document-method:bower/components/jquery/src/manipulation.js:429"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `elem.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/manipulation.js","line":429,"fingerprint":"javascript.browser.security.insecure-innerhtml:bower/components/jquery/src/manipulation.js:429"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `path` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low]","path":"bower/components/angular-route/angular-route.js","line":207,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/angular-route/angular-route.js:207"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"bower/components/angular-route/angular-route.js","line":905,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:bower/components/angular-route/angular-route.js:905"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `type` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low]","path":"bower/components/bootstrap/grunt/bs-raw-files-generator.js","line":21,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/bootstrap/grunt/bs-raw-files-generator.js:21"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `fullPath` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"bower/components/bootstrap/grunt/bs-raw-files-generator.js","line":25,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:bower/components/bootstrap/grunt/bs-raw-files-generator.js:25"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `fullPath` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"bower/components/bootstrap/grunt/bs-raw-files-generator.js","line":25,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:bower/components/bootstrap/grunt/bs-raw-files-generator.js:25"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/affix.js","line":19,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/affix.js:19"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/affix.js","line":23,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/affix.js:23"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/affix.js","line":106,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/affix.js:106"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/alert.js","line":18,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/alert.js:18"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/button.js","line":17,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/button.js:17"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/button.js","line":104,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/button.js:104"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/carousel.js","line":17,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/carousel.js:17"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/carousel.js","line":75,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/carousel.js:75"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/carousel.js","line":103,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/carousel.js:103"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/carousel.js","line":130,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/carousel.js:130"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/carousel.js","line":175,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/carousel.js:175"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/carousel.js","line":201,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/carousel.js:201"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/carousel.js","line":201,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/carousel.js:201"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":17,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/collapse.js:17"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":21,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/collapse.js:21"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":54,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/collapse.js:54"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":61,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/collapse.js:61"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":73,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/collapse.js:73"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":87,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/collapse.js:87"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":87,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/collapse.js:87"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":106,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/collapse.js:106"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":128,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/collapse.js:128"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/collapse.js","line":156,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/collapse.js:156"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/dropdown.js","line":19,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/dropdown.js:19"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/dropdown.js","line":108,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/dropdown.js:108"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/modal.js","line":19,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/modal.js:19"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/modal.js","line":240,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/modal.js:240"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/modal.js","line":266,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/modal.js:266"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"bower/components/bootstrap/js/popover.js","line":57,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:bower/components/bootstrap/js/popover.js:57"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/popover.js","line":95,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/popover.js:95"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/scrollspy.js","line":20,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/scrollspy.js:20"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/scrollspy.js","line":20,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/scrollspy.js:20"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/scrollspy.js","line":117,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/scrollspy.js:117"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/scrollspy.js","line":141,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/scrollspy.js:141"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tab.js","line":17,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tab.js:17"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/tab.js","line":101,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/tab.js:101"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":49,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:49"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":51,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:51"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":51,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:51"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":104,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:104"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":108,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:108"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":124,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:124"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":128,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:128"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":412,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:412"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":415,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/tooltip.js:415"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/bootstrap/js/tooltip.js","line":439,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/bootstrap/js/tooltip.js:439"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-selector","severity":"medium","message":"User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/bootstrap/js/transition.js","line":54,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-selector:bower/components/bootstrap/js/transition.js:54"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/jquery/src/ajax/jsonp.js","line":57,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/jquery/src/ajax/jsonp.js:57"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"bower/components/jquery/src/ajax/load.js","line":58,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:bower/components/jquery/src/ajax/load.js:58"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.append(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/ajax/load.js","line":62,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/ajax/load.js:62"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.globalEval(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/ajax/script.js","line":16,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/ajax/script.js:16"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `pnum` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low]","path":"bower/components/jquery/src/css.js","line":27,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/jquery/src/css.js:27"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `pnum` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low]","path":"bower/components/jquery/src/css.js","line":28,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/jquery/src/css.js:28"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.appendTo(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/css/defaultDisplay.js","line":17,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/css/defaultDisplay.js:17"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `pnum` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low]","path":"bower/components/jquery/src/css/var/rnumnonpx.js","line":4,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/jquery/src/css/var/rnumnonpx.js:4"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment","severity":"medium","message":"Possibility of prototype polluting assignment detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-ex [confidence low]","path":"bower/components/jquery/src/data/Data.js","line":70,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment:bower/components/jquery/src/data/Data.js:70"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment","severity":"medium","message":"Possibility of prototype polluting assignment detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-ex [confidence low]","path":"bower/components/jquery/src/data/Data.js","line":80,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment:bower/components/jquery/src/data/Data.js:80"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/jquery/src/deferred.js","line":31,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/jquery/src/deferred.js:31"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/jquery/src/deferred.js","line":39,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/jquery/src/deferred.js:39"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/jquery/src/deferred.js","line":77,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/jquery/src/deferred.js:77"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `pnum` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low]","path":"bower/components/jquery/src/effects.js","line":20,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/jquery/src/effects.js:20"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/jquery/src/effects/Tween.js","line":34,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/jquery/src/effects/Tween.js:34"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/jquery/src/effects/Tween.js","line":79,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/jquery/src/effects/Tween.js:79"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `rnotwhite` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-contr [confidence low]","path":"bower/components/jquery/src/event.js","line":179,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/jquery/src/event.js:179"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `types` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlle [confidence low]","path":"bower/components/jquery/src/event.js","line":179,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/jquery/src/event.js:179"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `event` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlle [confidence low]","path":"bower/components/jquery/src/event.js","line":255,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/jquery/src/event.js:255"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/jquery/src/event.js","line":338,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/jquery/src/event.js:338"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"bower/components/jquery/src/manipulation.js","line":487,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:bower/components/jquery/src/manipulation.js:487"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.globalEval(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/manipulation.js","line":542,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/manipulation.js:542"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop","severity":"medium","message":"Possibility of prototype polluting function detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-exis [confidence low]","path":"bower/components/jquery/src/traversing.js","line":24,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop:bower/components/jquery/src/traversing.js:24"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop","severity":"medium","message":"Possibility of prototype polluting function detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-exis [confidence low]","path":"bower/components/jquery/src/traversing.js","line":129,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop:bower/components/jquery/src/traversing.js:129"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.wrapAll(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/wrap.js","line":13,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/wrap.js:13"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.wrapInner(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/wrap.js","line":43,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/wrap.js:43"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.append(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/wrap.js","line":55,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/wrap.js:55"},{"rule_id":"opengrep/javascript.jquery.security.audit.jquery-insecure-method","severity":"medium","message":"User controlled data in a jQuery's `.wrapAll(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"bower/components/jquery/src/wrap.js","line":64,"fingerprint":"javascript.jquery.security.audit.jquery-insecure-method:bower/components/jquery/src/wrap.js:64"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-require","severity":"medium","message":"Detected the use of require(variable). Calling require with a non-literal argument might allow an attacker to load and run arbitrary code, or access arbitrary files. [confidence low]","path":"bower/components/showdown/compressed/showdown.js","line":62,"fingerprint":"javascript.lang.security.audit.detect-non-literal-require:bower/components/showdown/compressed/showdown.js:62"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `a` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled in [confidence low]","path":"bower/components/showdown/compressed/showdown.js","line":62,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/showdown/compressed/showdown.js:62"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/showdown/compressed/showdown.js","line":62,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/showdown/compressed/showdown.js:62"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `b` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled in [confidence low]","path":"bower/components/showdown/compressed/showdown.js","line":62,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/showdown/compressed/showdown.js:62"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-require","severity":"medium","message":"Detected the use of require(variable). Calling require with a non-literal argument might allow an attacker to load and run arbitrary code, or access arbitrary files. [confidence low]","path":"bower/components/showdown/src/showdown.js","line":133,"fingerprint":"javascript.lang.security.audit.detect-non-literal-require:bower/components/showdown/src/showdown.js:133"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `ext` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled  [confidence low]","path":"bower/components/showdown/src/showdown.js","line":254,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/showdown/src/showdown.js:254"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"bower/components/showdown/src/showdown.js","line":1332,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:bower/components/showdown/src/showdown.js:1332"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `charsToEscape` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-c [confidence low]","path":"bower/components/showdown/src/showdown.js","line":1429,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:bower/components/showdown/src/showdown.js:1429"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"js/app.js","line":110,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:js/app.js:110"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"js/app.js","line":111,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:js/app.js:111"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"js/app.js","line":112,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:js/app.js:112"}],"evidence":[],"data":{"rulesets":["javascript","php"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":0.0,"signed_commit_share":0.1379,"unpinned_manifests":3.0},"findings":[],"evidence":[{"kind":"posture","description":"bower/components/angularLocalStorage/package.json has no lockfile alongside it (unpinned dependencies)","ref":"bower/components/angularLocalStorage/package.json","url":null,"weight":0.3},{"kind":"posture","description":"bower/components/bootstrap/package.json has no lockfile alongside it (unpinned dependencies)","ref":"bower/components/bootstrap/package.json","url":null,"weight":0.3},{"kind":"posture","description":"bower/components/showdown/package.json has no lockfile alongside it (unpinned dependencies)","ref":"bower/components/showdown/package.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":1337.0,"function_nloc":13318.0,"mean_ccn":3.34,"p90_ccn":7.0,"complex_functions":32.0,"long_functions":3.0,"many_param_functions":8.0,"risky_nloc_share":0.175},"findings":[],"evidence":[{"kind":"complex-function","description":"trigger in bower/components/jquery/src/event.js: complexity 52, 87 lines","ref":"bower/components/jquery/src/event.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/event.js#L219","weight":0.8666666666666667},{"kind":"complex-function","description":"(anonymous) in bower/components/jquery/src/sizzle/dist/sizzle.js: complexity 45, 52 lines","ref":"bower/components/jquery/src/sizzle/dist/sizzle.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/sizzle/dist/sizzle.js#L1111","weight":0.75},{"kind":"complex-function","description":"Sizzle in bower/components/jquery/src/sizzle/dist/sizzle.js: complexity 39, 78 lines","ref":"bower/components/jquery/src/sizzle/dist/sizzle.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/sizzle/dist/sizzle.js#L188","weight":0.65},{"kind":"complex-function","description":"defaultPrefilter in bower/components/jquery/src/effects.js: complexity 35, 78 lines","ref":"bower/components/jquery/src/effects.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/effects.js#L117","weight":0.5833333333333334},{"kind":"complex-function","description":"remove in bower/components/jquery/src/event.js: complexity 34, 52 lines","ref":"bower/components/jquery/src/event.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/event.js#L149","weight":0.5666666666666667},{"kind":"complex-function","description":"superMatcher in bower/components/jquery/src/sizzle/dist/sizzle.js: complexity 32, 63 lines","ref":"bower/components/jquery/src/sizzle/dist/sizzle.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/sizzle/dist/sizzle.js#L1765","weight":0.5333333333333333},{"kind":"complex-function","description":"(anonymous) in bower/components/jquery/src/sizzle/dist/sizzle.js: complexity 28, 60 lines","ref":"bower/components/jquery/src/sizzle/dist/sizzle.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/sizzle/dist/sizzle.js#L1621","weight":0.4666666666666667},{"kind":"complex-function","description":"jQuery.fn.init in bower/components/jquery/src/core/init.js: complexity 27, 59 lines","ref":"bower/components/jquery/src/core/init.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/core/init.js#L16","weight":0.45},{"kind":"complex-function","description":"Sizzle.select in bower/components/jquery/src/sizzle/dist/sizzle.js: complexity 27, 49 lines","ref":"bower/components/jquery/src/sizzle/dist/sizzle.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/sizzle/dist/sizzle.js#L1900","weight":0.45},{"kind":"complex-function","description":"ajaxConvert in bower/components/jquery/src/ajax.js: complexity 25, 58 lines","ref":"bower/components/jquery/src/ajax.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/jquery/src/ajax.js#L198","weight":0.4166666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":13713.0,"duplicated_lines":2862.0,"duplicated_share":0.2087,"files":115.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/angular-sanitize/angular-sanitize.js:32 and bower/components/angular-sanitize/angular-sanitize.js:229","ref":"bower/components/angular-sanitize/angular-sanitize.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/angular-sanitize/angular-sanitize.js#L32","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:9 and bower/components/bootstrap/js/transition.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L9","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:12 and bower/components/bootstrap/dist/js/bootstrap.js:72","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L12","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:69 and bower/components/bootstrap/js/alert.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L69","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:162 and bower/components/bootstrap/js/button.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L162","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:273 and bower/components/bootstrap/js/carousel.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L273","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:497 and bower/components/bootstrap/js/collapse.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L497","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:668 and bower/components/bootstrap/js/dropdown.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L668","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:820 and bower/components/bootstrap/js/modal.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L820","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: bower/components/bootstrap/dist/js/bootstrap.js:1101 and bower/components/bootstrap/js/tooltip.js:1","ref":"bower/components/bootstrap/dist/js/bootstrap.js","url":"https://github.com/geekcompany/DeerResume/blob/6f7b09b3adf07c0fc1be0ff964cbe36af5676502/bower/components/bootstrap/dist/js/bootstrap.js#L1101","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":6.0,"weighted_findings":3.75,"scanned_lines":20404.0,"category:best-practice":3.0,"category:correctness":3.0},"findings":[{"rule_id":"opengrep/javascript.lang.best-practice.assigned-undefined","severity":"medium","message":"`undefined` is not a reserved keyword in Javascript, so this is \"valid\" Javascript but highly confusing and likely to result in bugs.","path":"bower/components/jquery/src/ajax/jsonp.js","line":81,"fingerprint":"javascript.lang.best-practice.assigned-undefined:bower/components/jquery/src/ajax/jsonp.js:81"},{"rule_id":"opengrep/javascript.lang.best-practice.assigned-undefined","severity":"medium","message":"`undefined` is not a reserved keyword in Javascript, so this is \"valid\" Javascript but highly confusing and likely to result in bugs.","path":"bower/components/jquery/src/callbacks.js","line":158,"fingerprint":"javascript.lang.best-practice.assigned-undefined:bower/components/jquery/src/callbacks.js:158"},{"rule_id":"opengrep/javascript.lang.best-practice.assigned-undefined","severity":"medium","message":"`undefined` is not a reserved keyword in Javascript, so this is \"valid\" Javascript but highly confusing and likely to result in bugs.","path":"bower/components/jquery/src/event.js","line":786,"fingerprint":"javascript.lang.best-practice.assigned-undefined:bower/components/jquery/src/event.js:786"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`match` is assigned twice; the first assignment is useless","path":"bower/components/bootstrap/grunt/bs-lessdoc-parser.js","line":100,"fingerprint":"javascript.lang.correctness.useless-assignment:bower/components/bootstrap/grunt/bs-lessdoc-parser.js:100"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`o` is assigned twice; the first assignment is useless","path":"bower/components/showdown/compressed/showdown.js","line":62,"fingerprint":"javascript.lang.correctness.useless-assignment:bower/components/showdown/compressed/showdown.js:62"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`b` is assigned twice; the first assignment is useless","path":"bower/components/showdown/compressed/showdown.js","line":62,"fingerprint":"javascript.lang.correctness.useless-assignment:bower/components/showdown/compressed/showdown.js:62"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":20404.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":4.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":32.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null}],"flags":[]}