{"ref":"artifact:sap-samples-teched2025-xp260","page":"/artifacts/sap-samples-teched2025-xp260","json":"/artifacts/sap-samples-teched2025-xp260.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-teched2025-xp260","name":"teched2025-XP260","artifact_type":"sample","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/SAP-samples/teched2025-XP260","title":"SAP-samples/teched2025-XP260 — README, Overview","checked":"2026-10-19","quote":"This workshop is designed for developers working with the SAP Cloud Application Programming Model (CAP) and Node.js."}}],"use_as":"reference","domain":"security-and-compliance","origin_ring":"sap-official","description":{"one_line":"An SAP TechEd 2025 workshop on embedding security into CAP applications on SAP BTP, worked through three of the OWASP Top 10 risks: broken access control, SQL injection and logging failures.","short":"TechEd 2025 workshop on OWASP Top 10 risks in CAP applications","what_it_solves":"Application security is easy to leave until later, and this workshop walks CAP and [Node.js](external:nodejs) developers through three of the OWASP Top 10 risks in turn: broken access control, with a horizontal and a vertical privilege escalation; SQL injection; and security logging and monitoring failures, which covers audit logging for sensitive data access in local development and security event monitoring in a productive SAP BTP environment. Every exercise module runs the same six steps, from an overview of the vulnerability through the vulnerable code, a step-by-step exploitation, the remediation and a verification to a summary, so a reader sees the flaw from an attacker's side and a defender's before fixing it with SAP BTP's built-in security services. It covers those three risks and leaves the rest of the OWASP list alone, and it expects some existing experience with Node.js and [GitHub](external:github). In the remediation step the whole corrected file has to be copied into the development environment; copying only the snippet that explains the fix leaves the application broken."},"links":{"repo":"https://github.com/SAP-samples/teched2025-XP260"},"identity":{"license":"Apache-2.0"},"source_available":true,"type_properties":{"form":{"value":"workshop","sources":[{"url":"https://github.com/SAP-samples/teched2025-XP260","title":"SAP-samples/teched2025-XP260 — README, Overview","checked":"2026-10-19","quote":"Welcome to this hands-on workshop dedicated to embedding security into your SAP BTP applications."}]}},"demonstrates":["capability:authorization","capability:audit-logging"],"maintainers":["actor:sap-samples"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"contributors":["actor:abdelkaderde","actor:ajaysoreng","actor:chcohrs","actor:jadolf","actor:kaderde","actor:martina-sap"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"6 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-09, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"15 test files"},{"label":"Docs","tier":"good","evidence":"README 5 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":10,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","npm":"not published under this name","stars":10,"forks":4,"open_issues":0,"archived":false,"pushed_at":"2026-09-30","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2025-08-07T12:18:56Z","open_prs":0,"tree_truncated":false,"test_files":15,"workflows":0,"other_ci":false,"readme_bytes":4941,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2025-08-07","last_commit":"2026-06-05","commits":600,"contributors":6,"readme_path":"README.md","readme_sha":"1214a972b7f267e473e26c4dcf32d12d58086b4a","repo_read":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:kaderde","name":"Abdelkader Abdelaziz","json":"/actors/kaderde.json"},{"ref":"actor:abdelkaderde","name":"AbdelkaderDe","json":"/actors/abdelkaderde.json"},{"ref":"actor:ajaysoreng","name":"Ajay Soreng","json":"/actors/ajaysoreng.json"},{"ref":"actor:chcohrs","name":"chcohrs","json":"/actors/chcohrs.json"},{"ref":"actor:jadolf","name":"jadolf","json":"/actors/jadolf.json"},{"ref":"actor:martina-sap","name":"martina-sap","json":"/actors/martina-sap.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}