1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Melhorar o código de Login

Estou com um pequeno problema, o meu sistema de usuário e senha esta funcionando perfeitamente, porém ele não é o ideal e esta com o Erro:

SqlException was unhandled - C#

Ou seja, creio que esta vulneravel a Injection.

Queria otimizar este código e deixar mais seguro, rápido e limpo. Porém, estou no começo de C#, em programação na verdade.

Segue código:

public String getSenha(string user)
{
    String Query = "SELECT senha FROM dbo.Login WHERE usuario = '" + user + "'"; //Comando

    Conexao Connection = new Conexao(); //Instancia a classe conexao
    object ret = Connection.QueryScalar(Query); //Executa o comando e salva o resultado em 'ret'

    if (ret.GetType() == typeof(int))
        return null;
    else
        return (string)ret;
}

public Boolean checkUser(string user)
{
    String Query = "SELECT COUNT(usuario) FROM dbo.Login WHERE usuario = '" + user + "'";
    Conexao Connection = new Conexao();

    if ((int)Connection.QueryScalar(Query) > 0) // renorno de 0 significa que nao existe esse usuario.
        return true;
    else
        return false;
}

E este é o código do Botão Login

private void btnEntrar_Click(object sender, EventArgs e)
{
    SplashScreenManager.ShowForm(typeof(ucCarregando));
    tspUsuario_logado = txtUsuario.Text;
    Classes.Contas Account = new Classes.Contas();
    if (Account.ValidaUsuario(txtUsuario.Text))
    {
        retsUsuario.Visible = false;
        if (Account.ValidaUsuario(txtUsuario.Text) == txtSenha.Text)
        {
            retsUsuario.Visible = false;
            retsSenha.Visible = false;
            this.Dispose();
            TelaPrincipal FormBuffer = new TelaPrincipal();
            FormBuffer.ShowDialog();

O erro do SQL é o seguinte

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in Microsoft.Practices.EnterpriseLibrary.Data.dll

Additional information: Unclosed quotation mark after the character string '''. Incorrect syntax near '''.

E aponta na seguinte linha da Classe de Conexão que fiz

public Object QueryScalar(string Command)
    {
        // Error is thrown here
        return DatabaseFactory.CreateDatabase("Windows.Properties.Settings.dboSoftwareGSCConnectionString").ExecuteScalar(CommandType.Text, Command);
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags c# login segurança ou faça a sua própria pergunta.