rspec/rules/S5115/abap/rule.adoc

25 lines
927 B
Plaintext
Raw Normal View History

2020-12-23 14:59:06 +01:00
Checking logged users' permissions by comparing their name to a hardcoded string can create security vulnerabilities. It prevents system administrators from changing users' permissions when needed (example: when their account has been compromised). Thus system fields ``SY-UNAME`` and ``SYST-UNAME`` should not be compared to hardcoded strings. Use instead ``AUTHORITY-CHECK`` to check users' permissions.
2020-06-30 12:50:28 +02:00
2020-12-23 14:59:06 +01:00
This rule raises an issue when either of the system fields ``SY-UNAME`` or ``SYST-UNAME`` are compared to a hardcoded value in a ``CASE`` statement or using one of the following operators: ``=``, ``EQ``, ``<>``, ``NE``.
2020-06-30 12:50:28 +02:00
== Noncompliant Code Example
----
IF SY-UNAME = 'ALICE'. " Noncompliant
ENDIF.
CASE SY-UNAME.
WHEN 'A'. " Noncompliant
ENDCASE.
----
== Compliant Solution
----
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD mycarrid.
IF sy-subrc <> 0.
MESSAGE 'Not authorized' TYPE 'E'.
ENDIF.
----