Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Algumas bibliotecas operam gerando código e executando-o para executar alguma operação para o chamador. O problema básico é gerar código em nome de código de menor confiança e executá-lo em uma confiança mais alta. O problema piora quando o chamador pode influenciar a geração de código, portanto, você deve garantir que somente o código que você considera seguro seja gerado.
Você precisa saber exatamente qual código você está gerando o tempo todo. Isso significa que você deve ter controles estritos sobre todos os valores obtidos de um usuário, sejam cadeias de caracteres entre aspas (que devem ser escapadas para que não possam incluir elementos de código inesperados), identificadores (que devem ser verificados para verificar se são identificadores válidos) ou qualquer outra coisa. Os identificadores podem ser perigosos porque um assembly compilado pode ser modificado para que seus identificadores contenham caracteres estranhos, o que provavelmente causará falhas (embora isso raramente seja uma vulnerabilidade de segurança).
É recomendável que você gere código usando Reflection Emit, o que geralmente ajuda a evitar muitos desses problemas.
Ao compilar o código, considere se há alguma maneira de um programa mal-intencionado modificá-lo. Há uma pequena janela de tempo durante a qual o código mal-intencionado pode alterar o código-fonte no disco antes que o compilador o leia ou antes que seu código carregue o arquivo .dll? Nesse caso, você deve proteger o diretório que contém esses arquivos, usando uma Lista de Controle de Acesso no sistema de arquivos, conforme apropriado.