The Open Web Application Security Project (OWASP) é uma comunidade online que produz artigos, metodologias, documentação, ferramentas e tecnologias gratuitamente no campo da segurança de aplicações web. Em particular, eles publicaram o
OWASP Top 10
, que descreve em detalhes as principais ameaças contra as aplicações web.
Neste artigo confrontaremos o documento com as responsabilidades do desenvolvedor ABAP na programação de interfaces de usuário seguras. Existem algumas regras simples que todo programador ABAP deve conhecer.
As seções a seguir descrevem exemplos de diferentes vulnerabilidades na interface do usuário de aplicações web e explicam como evitá-las com uma programação segura. O problema com aplicações web é que você quer que os usuários visitem seu site e interajam com o aplicativo. Se o usuário inserir dados inesperados, um atacante poderá fazer com que o servidor ou o cliente/navegador executem ações indesejadas. Portanto, a primeira diretriz para desenvolver um aplicativo web seguro é:
Nunca confie em nenhuma informação proveniente do exterior e nunca assuma nada a respeito.
Validação de entrada
Sempre que o software processar uma entrada, ela deve ser validada. Isso garante alta qualidade de dados e evita entradas inesperadas. A validação adequada da entrada deve consistir em 6 etapas:
Etapa 1: Verificação de existência e comprimento
Etapa 2: Canonicalização
O conteúdo da variável de entrada é transformado em sua representação mais simples e curta.
Etapa 3: Verificação de tipo
Etapa 4: Verificação de intervalo
Etapa 5: Filtro de lista branca
A lista branca é a tabela que contém elementos permitidos.
TYPES whitelist TYPE HASHED TABLE OF string
WITH UNIQUE KEY table_line.
DATA(whitelist_name) = VALUE whitelist( ( `APPLE` ) ( `ORANGE` ) ( `PEACH` ) ).
PARAMETERS p_input TYPE string.
IF NOT line_exists( whitelist_name[ table_line = p_input ] ).
cl_demo_output=>write( `Somente os seguintes elementos são permitidos:` ).
cl_demo_output=>display( whitelist_name[] ).
ENDIF.
Etapa 6: Filtro de lista negra
A lista negra é o oposto de uma lista branca e contém elementos que não são permitidos.
TYPES blacklist TYPE HASHED TABLE OF string
WITH UNIQUE KEY table_line.
DATA(blacklist_name) = VALUE blacklist( ( `APPLE` ) ( `ORANGE` ) ( `PEACH` )