Foro de elhacker.net

Programación => .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
  1. Imports System.Data.OleDb
  2. Imports System.Security.Cryptography
  3.  
  4. Public Class Cls_Conexion
  5.    Public Conexion As New OleDb.OleDbConnection
  6.    Dim ControlError As String
  7.  
  8.    Public Function Abrir(ByVal Servidor As String, ByVal BaseDatos As String, ByVal Usuario As String, ByVal Password As String) As Boolean
  9.        Try
  10.            Conexion.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= c:\trabajito; Extended Properties= ""Excel 12.0;HDR=YES;""")
  11.            Conexion.Close()
  12.            Conexion.Open()
  13.            Conexion.Close()
  14.            Abrir = True
  15.        Catch ex As Exception
  16.            Abrir = False
  17.            MsgBox("Acceso no Permitido", vbCritical, "Módulo de Registro Civil")
  18.        End Try
  19.    End Function
  20.  
  21.    Public Function AbrirSql(ByVal Sql As String) As DataTable
  22.        On Error GoTo ControlError
  23.        Dim ObjDataSet As New DataSet
  24.        Conexion.Open()
  25.        Dim ConsultaSql As New OleDb.OleDbCommand(Sql, Conexion)
  26.        'ConsultaSql.CommandType = CommandType.StoredProcedure
  27.        Dim ObjDataAdapter As New OleDb.OleDbDataAdapter(ConsultaSql)
  28.        Dim ObjDataTable As New DataTable
  29.        ObjDataAdapter.Fill(ObjDataTable)
  30.        AbrirSql = ObjDataTable
  31.        Conexion.Close()
  32.        Exit Function
  33. ControlError: MsgBox(Err.Description & " No se Puede Realizar esa Operación", MsgBoxStyle.Critical, "Módulo Registro Civil")
  34.        Conexion.Close()
  35.    End Function
  36.  
  37.    Public Function EjecutarSqlOLEDB(ByVal cComando As OleDbCommand) As Boolean
  38.        Dim transaction As OleDbTransaction
  39.        Conexion.Open()
  40.        transaction = Conexion.BeginTransaction()
  41.        Try
  42.            cComando.Transaction = transaction
  43.            cComando.Connection = Conexion
  44.            cComando.ExecuteNonQuery()
  45.            transaction.Commit()
  46.            Conexion.Close()
  47.            EjecutarSqlOLEDB = True
  48.        Catch ex As Exception
  49.            transaction.Rollback()
  50.            Conexion.Close()
  51.            EjecutarSqlOLEDB = False
  52.            MsgBox(Err.Description & " No se Puede Realizar esa Operación", MsgBoxStyle.Critical, "Módulo Registro Civil")
  53.            '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)
  54.        End Try
  55.    End Function  
  56.  
  57. 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
  1. imports system.data.sqlclient
  2. module Conexion0
  3. dim con as sqlconnection
  4. dim ad as new sqldataadapter
  5. dim dt as datatable
  6. dim comando as string
  7. Public conexion As String = "data source = 127.0.0.1; initial catalog = GunzDB; user id = sa; password = zombie000"
  8.  
  9. 'datasource = servidor , initial catalog=BaseDeDatos , userid= usuario , password = contraseña
  10.  
  11. public sub conectar
  12. con = new sqlconnection()
  13. con.connectionstring(conexion)
  14.  
  15. try
  16. con.open()
  17. msgbox("Conexion Exitosa (:")
  18. con.close()
  19. catch
  20. msgbox("Error en la conexion")
  21. end try
  22.  
  23. end sub
  24.  
  25. 'Ejemplo de una query
  26. public sub query
  27. dt = new datatable
  28. 'Query para obtener todos los datos de la tabla Cuentas para al final mostrarla en un Datagridview
  29. comando = "SELECT * FROM Cuentas"
  30. ad = new sqldataadapter(comando,conexion)
  31. ad.fill(dt)
  32. Form1.datagridview1.datasource = dt
  33.  
  34. end sub
  35.  
  36. end module
  37.  
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
  1. Imports System.Data.OleDb
  2. Imports System.Security.Cryptography
  3. Imports System.Data.SqlClient
  4. Public Class clsConexion
  5.    Public cadenaconexion As New SqlConnection
  6.    Public Function Abrir(ByVal server As String, ByVal DB As String, ByVal usuario As String, ByVal clave As String) As Boolean
  7.        Try
  8.            cadenaconexion.ConnectionString = "Data Source=(local);Initial Catalog=PLANILLA;integrated security=true"
  9.            cadenaconexion.Close()
  10.        Catch ex As Exception
  11.            MessageBox.Show(ex.Message.ToString())
  12.        End Try
  13.    End Function
  14.    Public Function AbrirSql(ByVal sentenciaSQL As String) As DataTable
  15.        cadenaconexion.Open()
  16.        Dim consulta As New SqlCommand(sentenciaSQL, cadenaconexion)
  17.        Dim daBD As New SqlDataAdapter(consulta)
  18.        Dim dtBD As New DataTable
  19.        daBD.Fill(dtBD)
  20.        AbrirSql = dtBD
  21.        cadenaconexion.Close()
  22.    End Function
  23.    Public Sub Cerrarconexion()
  24.        cadenaconexion.Close()
  25.    End Sub
  26.  
  27. End Class
  28.  


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
Código:
"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

Código:
"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
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

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

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 ^^,