Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Choclito en 8 Noviembre 2010, 16:15 PM

Título: Conectar a un Servidor por Internet
Publicado por: Choclito en 8 Noviembre 2010, 16:15 PM
Hola a todos yo trabajo realizando aplicaciones con conexiones locales mediante el siguiente codigo.
ahora quiero ver si se puede conectar por internet una aplicacion y ver si puedo seguir usando la siguiente forma de conectarse.. me estoy rompiendo la cabeza en intentar conectar mediante internet pero no tengo ni idea.. me gustaria si me pudieran dar algunas pautas o si tuvieran ejemplos seria mucho mejor.
me dijeron que busque DNS pero tuve buscando pero no encuentro ejemplos claros haber si me hechan una mano.

Código (vbnet) [Seleccionar]
Imports System.Data.OleDb
Imports System.Security.Cryptography

Public Class Cls_Conexion
    Public Conexion As New OleDb.OleDbConnection
    Dim ControlError As String

    Public Function Abrir(ByVal Servidor As String, ByVal BaseDatos As String, ByVal Usuario As String, ByVal Password As String) As Boolean
        Try
            Conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= c:\trabajito; Extended Properties= ""Excel 12.0;HDR=YES;""")
            Conexion.Close()
            Conexion.Open()
            Conexion.Close()
            Abrir = True
        Catch ex As Exception
            Abrir = False
            MsgBox("Acceso no Permitido", vbCritical, "Módulo de Registro Civil")
        End Try
    End Function

    Public Function AbrirSql(ByVal Sql As String) As DataTable
        On Error GoTo ControlError
        Dim ObjDataSet As New DataSet
        Conexion.Open()
        Dim ConsultaSql As New OleDb.OleDbCommand(Sql, Conexion)
        'ConsultaSql.CommandType = CommandType.StoredProcedure
        Dim ObjDataAdapter As New OleDb.OleDbDataAdapter(ConsultaSql)
        Dim ObjDataTable As New DataTable
        ObjDataAdapter.Fill(ObjDataTable)
        AbrirSql = ObjDataTable
        Conexion.Close()
        Exit Function
ControlError: MsgBox(Err.Description & " No se Puede Realizar esa Operación", MsgBoxStyle.Critical, "Módulo Registro Civil")
        Conexion.Close()
    End Function

    Public Function EjecutarSqlOLEDB(ByVal cComando As OleDbCommand) As Boolean
        Dim transaction As OleDbTransaction
        Conexion.Open()
        transaction = Conexion.BeginTransaction()
        Try
            cComando.Transaction = transaction
            cComando.Connection = Conexion
            cComando.ExecuteNonQuery()
            transaction.Commit()
            Conexion.Close()
            EjecutarSqlOLEDB = True
        Catch ex As Exception
            transaction.Rollback()
            Conexion.Close()
            EjecutarSqlOLEDB = False
            MsgBox(Err.Description & " No se Puede Realizar esa Operación", MsgBoxStyle.Critical, "Módulo Registro Civil")
            'MessageBox.Show("No se puede realizar la conexion a la Base de Datos... Contáctese con el Administrador del Sistema", "SIGAF - ESCALAFON", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Function 

End Class

Título: Re: Conectar a un Servidor por Internet
Publicado por: .::IT::. en 8 Noviembre 2010, 17:38 PM
"Choclito" lamento decepcionarte pero si estas usando bases de datos de archivo(Excel, access entre otros) vas ah poder conectarte ah ellas usando software de terceros ya sea el famoso hamachi ,OPenvpn entre otros, en mi opinión te recomiendo Openvpn es un poco mas difícil de configurar que el hamachi(que es muy fácil)pero es mas rápido, como recomendación seria que uses motores de bases de datos  como Postgresl,MySQL, MSSQl, Oracle etc. Y casi lo olvido conectarse ah una base de datos de archivo por Internet es muy pero muy lento, y para terminar si usas Windows Xp para adelante pues puedes montar una VPN casera que por cierto es mas rápida que openvpn(yo lo probé y te lo puedo garantizar) de dejo el link cualquier duda consulta en el foro
http://www.elguille.info/sistema/VPN/vpn_servidor.aspx
Título: Re: Conectar a un Servidor por Internet
Publicado por: .mokk. en 8 Noviembre 2010, 18:08 PM
Yo la verdad te aconsejaria mejor hacerlo en MySQL o MSSQL, si ya pasaras a hacerlo por internet, ya que como dijo .::IT::.  , sera mucho mas tardado y ademas quien quiere estarse matando por hacer una conexion a archivos remotos si para ello tenemos la facilidad de MySQL y/o MSSQL.

Ademas es casi lo mismo la conexion o am el codigo de conexion
Ejemplo Conectar a MSSQL
Código (vb.net) [Seleccionar]

imports system.data.sqlclient
module Conexion0
dim con as sqlconnection
dim ad as new sqldataadapter
dim dt as datatable
dim comando as string
Public conexion As String = "data source = 127.0.0.1; initial catalog = GunzDB; user id = sa; password = zombie000"

'datasource = servidor , initial catalog=BaseDeDatos , userid= usuario , password = contraseña

public sub conectar
con = new sqlconnection()
con.connectionstring(conexion)

try
con.open()
msgbox("Conexion Exitosa (:")
con.close()
catch
msgbox("Error en la conexion")
end try

end sub

'Ejemplo de una query
public sub query
dt = new datatable
'Query para obtener todos los datos de la tabla Cuentas para al final mostrarla en un Datagridview
comando = "SELECT * FROM Cuentas"
ad = new sqldataadapter(comando,conexion)
ad.fill(dt)
Form1.datagridview1.datasource = dt

end sub

end module

try
Título: Re: Conectar a un Servidor por Internet
Publicado por: Choclito en 8 Noviembre 2010, 18:22 PM
Ola esto es mi otra conexion que hago ya y quiero ver si con esta conexion funciona
nota : me olvide decirle que mi gestor de base de datso era el sql

Código (vbnet) [Seleccionar]
Imports System.Data.OleDb
Imports System.Security.Cryptography
Imports System.Data.SqlClient
Public Class clsConexion
   Public cadenaconexion As New SqlConnection
   Public Function Abrir(ByVal server As String, ByVal DB As String, ByVal usuario As String, ByVal clave As String) As Boolean
       Try
           cadenaconexion.ConnectionString = "Data Source=(local);Initial Catalog=PLANILLA;integrated security=true"
           cadenaconexion.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message.ToString())
       End Try
   End Function
   Public Function AbrirSql(ByVal sentenciaSQL As String) As DataTable
       cadenaconexion.Open()
       Dim consulta As New SqlCommand(sentenciaSQL, cadenaconexion)
       Dim daBD As New SqlDataAdapter(consulta)
       Dim dtBD As New DataTable
       daBD.Fill(dtBD)
       AbrirSql = dtBD
       cadenaconexion.Close()
   End Function
   Public Sub Cerrarconexion()
       cadenaconexion.Close()
   End Sub
 
End Class
Título: Re: Conectar a un Servidor por Internet
Publicado por: .mokk. en 8 Noviembre 2010, 18:29 PM
Pues si deberia funcionar, solo recuerda tambien que a la Base de Datos a la cual accederemos si es en MSSQL tiene que tener permitido el acceso remoto, y asignarle un userid y contraseña para la seguridad, la conexion que tu usas ahi es mayormente usado para locales.

y en la Funcion Abrir no estoy seguro porque no colocar el
cadenaconexion.Open()

Por lo demas lo vi bien
Título: Re: Conectar a un Servidor por Internet
Publicado por: Choclito en 8 Noviembre 2010, 18:43 PM
ya muchas gracias pero lo que quiero saber es como configurar la conexion ..  lo hago con esta cadena de conexion o tengo que usar otra ..
eso es la gran duda que tengo como tu dices eso es para conexiones locales .. pero para conectarme tendra que usar otro codigo o algo ??
porque hasta donde estaba investigando me dijeron que haga conexiones ODBC
es cierto eso ..?
Título: Re: Conectar a un Servidor por Internet
Publicado por: .mokk. en 8 Noviembre 2010, 18:58 PM
hehehe si tmb se puede con ODBC o he visto pero yo siempre lo hago con SQL ahi hehe
si te fijas en el source anterior que puse el codigo de conexion es

"data source = 127.0.0.1; initial catalog = GunzDB; user id = sa; password = zombie000"


Con esa es la que yo uso pra conectarme a Base de Datos remotas en MSSQL solo claro en ves de esos datos pongo la IP del servidor un ejemplo a servidor remoto seria


"data source = crymore.sytes.net; initial catalog = GunzDB; user id = sa; password = zombie000"


Con esa podras entrar a mi Base de Datos
crymore.sytes.net es mi NO-IP para hacer redireccion a mi hehe, aunque GunZDB es una Base de Datos que uso para un juego y por ahora esta vacia hehe ahi puedes intentar entrar en ella para que veas (:
Título: Re: Conectar a un Servidor por Internet
Publicado por: MANULOMM en 8 Noviembre 2010, 20:57 PM
OK, para el caso esta bien.

Pero te presento el mundo de los servicios web, publicar la BD es una mala practica, seria muy sensible a un ataque, un servicio web puede viajar por el puerto 80 ( el mas comun) y utilizar SSL para encripcion, la conexión con la BD es mas vulnerable.


Atentamente,

Juan Manuel Lombana

Microsoft Certified Professional
Microsoft Student Partner
Medellín - Colombia
Título: Re: Conectar a un Servidor por Internet
Publicado por: .mokk. en 8 Noviembre 2010, 22:43 PM
Cita de: MANULOMM en  8 Noviembre 2010, 20:57 PM
OK, para el caso esta bien.

Pero te presento el mundo de los servicios web, publicar la BD es una mala practica, seria muy sensible a un ataque, un servicio web puede viajar por el puerto 80 ( el mas comun) y utilizar SSL para encripcion, la conexión con la BD es mas vulnerable.


Atentamente,

Juan Manuel Lombana

Microsoft Certified Professional
Microsoft Student Partner
Medellín - Colombia

Eso si es verdad, por lo mismo en esta clase de proyectos hay que tener cuidado, desde saber quienes lo tendran y que ellos no se lo pasen a terceros, tambien hacer un login de tipo HWID para hacerlo mejor, y claro proteger nuestra aplicacion para que no pueda ser leida facilmente ya sea con .NET Reflector o algun otro.

Yo solo uso esta forma ya que donde esta hosteada la DB, no es mi PC y crear una web en ella para manejar la DB se me hace mas tedioso que crear una aplicacion de escritorio hehe , proximamente vere eso para hacer alguna en silverlight(si esque se puede).
Título: Re: Conectar a un Servidor por Internet
Publicado por: Choclito en 9 Noviembre 2010, 03:54 AM
Hola de new mira esta interante tu conexion
crymore.sytes.net eso tu lo configurastes en tu Pc y como haria yo por ejemplo para configurar eso en mi servidor para poderme conectar o solo pido Ip ?
creo que con eso se solucionaria la duda que tengo ..?
Título: Re: Conectar a un Servidor por Internet
Publicado por: .mokk. en 9 Noviembre 2010, 04:52 AM
Si solo necesitas usar la IP de donde esta localizado la DB, yo uso crymore.sytes.nt que cree en la pagina de no-ip.com porque mi IP es dinamica osea cada dia cambia(publica) por lo tanto tendria que estar cambiando el programa y con lo de no-ip.com me descarga un programa y me registra un tipo host para que crymore.sytes.net siempre este actualizada ahi con mi IP.

En conclusion si solo necesitas la IP donde esta la Base de Datos.
Título: Re: Conectar a un Servidor por Internet
Publicado por: Choclito en 9 Noviembre 2010, 05:10 AM
bueno muchas gracias a todo e intentare hacerlo y ya les estare compartiendo los resultado Dx.!
Título: Re: Conectar a un Servidor por Internet
Publicado por: MANULOMM en 9 Noviembre 2010, 16:11 PM
Cita de: .mokk. en  8 Noviembre 2010, 22:43 PM

Eso si es verdad, por lo mismo en esta clase de proyectos hay que tener cuidado, desde saber quienes lo tendran y que ellos no se lo pasen a terceros, tambien hacer un login de tipo HWID para hacerlo mejor, y claro proteger nuestra aplicacion para que no pueda ser leida facilmente ya sea con .NET Reflector o algun otro.

Yo solo uso esta forma ya que donde esta hosteada la DB, no es mi PC y crear una web en ella para manejar la DB se me hace mas tedioso que crear una aplicacion de escritorio hehe , proximamente vere eso para hacer alguna en silverlight(si esque se puede).

Ante esto tienes varios escenarios.
1. Si es una aplicacion de escritorio y la BD esta en tu red local no hay problema pues es un escenario seguro detras de un proxy o un NAT etc.
2. Si es una app web y el servidor web se encuentra en la misma red del servidor de datos tampoco hay lio, de hecho es un poco redundante hacer un servio para consumirlo en una web si todo es tuyo.
3. Para aplicaciones en silverlight si necesitas un servicio web para conectarte con los datos pues silverlight es de cliente y necesita pasar por el Servidor para obtener respuesta como todo es asincrono la unica forma de conexion con el servidor es por medio de un servicio, al igual que en flash o Flex.


Atentamente,

Juan Manuel Lombana
Microsoft Student Partner
Microsoft Certified Professional
Medellín - Colombia
Título: Re: Conectar a un Servidor por Internet
Publicado por: .mokk. en 9 Noviembre 2010, 16:23 PM
Cita de: MANULOMM en  9 Noviembre 2010, 16:11 PM
Cita de: .mokk. en  8 Noviembre 2010, 22:43 PM

Eso si es verdad, por lo mismo en esta clase de proyectos hay que tener cuidado, desde saber quienes lo tendran y que ellos no se lo pasen a terceros, tambien hacer un login de tipo HWID para hacerlo mejor, y claro proteger nuestra aplicacion para que no pueda ser leida facilmente ya sea con .NET Reflector o algun otro.

Yo solo uso esta forma ya que donde esta hosteada la DB, no es mi PC y crear una web en ella para manejar la DB se me hace mas tedioso que crear una aplicacion de escritorio hehe , proximamente vere eso para hacer alguna en silverlight(si esque se puede).

Ante esto tienes varios escenarios.
1. Si es una aplicacion de escritorio y la BD esta en tu red local no hay problema pues es un escenario seguro detras de un proxy o un NAT etc.
2. Si es una app web y el servidor web se encuentra en la misma red del servidor de datos tampoco hay lio, de hecho es un poco redundante hacer un servio para consumirlo en una web si todo es tuyo.
3. Para aplicaciones en silverlight si necesitas un servicio web para conectarte con los datos pues silverlight es de cliente y necesita pasar por el Servidor para obtener respuesta como todo es asincrono la unica forma de conexion con el servidor es por medio de un servicio, al igual que en flash o Flex.


Atentamente,

Juan Manuel Lombana
Microsoft Student Partner
Microsoft Certified Professional
Medellín - Colombia

Si, es lo que ando viendo aunque tambien debo tener cuidado con ello puesto que ya en el servidor tenemos una web la cual por ahora no hemos tenido problemas, pero hubo una ocacion en que uno de staff presto su cuenta y como anteriormente el panel estaba tambien en web accesaba facilmente sin nunca saber quien fuera y ahi hubo conflictos por lo que decidimos crear la aplicacion de escritorio que tambien obtenia datos de la PC para asi asegurar que sea del Staff , estos datos ya previamente obtenidos. Y si al ejecutar la aplicacion y la PC no es alguna que tenga acceso se autoelimina la aplicacion.

Esto a servido por ahora, pero como tu dices si llegan a obtener datos para el acceso a la DB podria ser crucial.

En tu opinion que prefiririas usar? A la vez aveces obtenemos ataques Ddos por lo que antes tumbaban la web y no teniamos acceso al panel, y como la aplicacion es por ip esto no importa si la web cae o no.
Título: Re: Conectar a un Servidor por Internet
Publicado por: .::IT::. en 9 Noviembre 2010, 19:22 PM
mi estimado "choclito" si estas en face de diseño pues deberias usar Web Service como recomienda "MANULOMM" sobre todo por la seguridad de base de datos.

y bueno si ya tienes tu aplicacion ya terminada pues lo mas barato es una VPN, y aún asi tu aplicacion no es segura ya que si tu colocas tus metodos de manejo de la base de datos(INSERT,UPDATE, ETC)en tu aplicacion pues tambien vas ah tener que colocar la cadena de conexion  y esa es muy facil recuperarla ya que VB .net(y cualqueir lenguaje .net) no genera codigo nativo(y anunque lo generara igual se puede recuperar las cadenas de conexion si es que estan en el programa). Por eso y por muchas Cosas mas existen software de terceros como "tarantella" que permiten hostear tu aplicacion en internet pero si son costosas.

Suerte Choclo tu puedes!!!!!!!!!!!
Título: Re: Conectar a un Servidor por Internet
Publicado por: Choclito en 9 Noviembre 2010, 21:43 PM
muchas gracias .. asu too lo ven negocio ahora jiji ..
weno ya lo tengo la aplicacion lista lo que toy haciendo ahora la conexion no mas y en eso toy trabajando ahora y espero lograrlo too se puede ^^,