Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Como: exibir mensagens de erro seguras

Quando seu aplicativo exibe mensagens de erro, ele não deve dar informações que um usuário mal-intencionado pode achar útil para atacar seu sistema. Por exemplo, se seu aplicativo tenta sem sucesso fazer logon em um banco de dados, ele não deve exibir uma mensagem de erro que inclui o nome do usuário que está usando.

Há um certo número de maneiras de controlar as mensagens de erro, incluindo o seguinte:

  • Configure o aplicativo para não exibir mensagens de erro detalhadas para usuários remotos. (Os usuários remotos são aqueles que a solicitação páginas ao mesmo tempo em que não está funcionando no computador do servidor Web ). You can optionally redirect errors to an application page.

  • Include error handling whenever practical and construct your own error messages. No seu manipulador de erro, você pode testar para ver se o usuário é local e reagir de acordo.

  • Criar um manipulador de erro global no nível da página ou aplicativo que captura todas as exceções não tratadas e as encaminha para uma página de erro genérico. Dessa forma, mesmo se você não antecipar um problema, pelo menos os usuários não verá uma página de exceção.

To configure the application to turn off errors for remote users

  • No arquivo Web.config para seu aplicativo, faça as seguintes alterações para o elemento customErrors:

    • Defina o atributo mode para RemoteOnly (case-sensitive). Isso configura o aplicativo para mostrar erros detalhados somente para usuários locais (isto é, para você, o desenvolvedor).

    • Opcionalmente incluir um atributo defaultRedirect que aponta para uma página de erro de aplicação.

    • Optionally include <error> elements that redirect specific errors to specific pages. Por exemplo, você pode redirecionar erros padrão 404 (página não encontrada) para sua própria página do aplicativo.

    O exemplo de código a seguir mostra um bloco customErrors típico no arquivo Web.config.

    <customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx"> 
       <error statusCode="404" redirect="NoSuchPage.aspx"/> 
       <error statusCode="403" redirect="NoAccessAllowed.aspx"/> 
    </customErrors> 
    

To include error handling

  1. Use a try-catch block around any statements that might generate errors.

  2. Optionally, test for a local user with the IsLocal property and modify error handling accordingly. The value 127.0.0.1 is equivalent to localhost and indicates that the browser is on the same computer as the Web server.

    The following code example shows an error-handling block. If an error occurs, a session state variable is loaded with details about the message, and the application then displays a page that can read the Session variable and display the error. (The error is deliberately written to provide no exploitable details to the user.) If the user is local, different error details are provided. In the finally block, an open resource is released.

    Try
       SqlConnection1.Open()
       SqlDataAdapter1.Fill(Me.DsPubs1)
    Catch ex As Exception
       If Request.IsLocal Then
          Session("CurrentError") = ex.Message
        Else
          Session("CurrentError") = "Error processing page."
        End If
        Server.Transfer("ApplicationError.aspx")
    Finally
           SqlConnection1.Close()
    End Try
    

    try
    {
        sqlConnection1.Open();
        sqlDataAdapter1.Fill(dsCustomers1);
    }
    catch (Exception ex)
    {
        if(Request.IsLocal)
        { Session["CurrentError"] = ex.Message; }
        else
        { Session["CurrentError"] = "Error processing page."; }
        Server.Transfer("ApplicationError.aspx");
    }
    finally 
    {
        this.sqlConnection1.Close();
    }
    

You can also create an error handler that catches all unhandled exceptions at the page level or for the application as a whole.

To create a global error handler

  • To create a global handler in a page, create a handler for the TemplateControl.Error event. To create an application-wide error handler, in the Global.asax file, add code to the HttpApplication.Error event. These methods are called if an unhandled exception occurs anywhere in your page or application, respectively. You can get information about the most recent error from the GetLastError method.

    ObservaçãoObservação

    If you have a global error handler, it takes precedence over error handling specified in the defaultRedirect attribute of the customErrors configuration element.

    The following code example shows a handler that gets information about the current error, puts it into a Session variable, and then calls a generic error-handling page that can extract and display the error information.

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        Session("CurrentError") = "Global: " & _
            Server.GetLastError.Message
        Server.Transfer("lasterr.aspx")
    End Sub
    

    protected void Application_Error(Object sender, EventArgs e)
    {
        Session["CurrentError"] = "Global: " + 
            Server.GetLastError().Message;
        Server.Transfer("lasterr.aspx");
    }
    

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft