¿Cuáles son las mejores prácticas para confiar en las fuentes de conexión en software de código abierto?

3

Bastante conciso, pero lo explicaré con un ejemplo:

Digamos que tengo una aplicación simple escrita en C # y quiero saber cuántas personas abren la aplicación al día. la solución más sencilla sería tener una función que enviara la marca de tiempo actual para decir un archivo php en un servidor remoto. ese servidor luego agrega las marcas de tiempo en una base de datos que luego se puede consultar fácilmente.

Sin embargo, si el software es de código abierto, es un asunto trivial para que cualquier persona pueda copiar, pegar su trabajo y enviar marcas de tiempo falsas repetidamente, eliminando sus números.

    
pregunta Marcus Gosselin 19.05.2016 - 05:41
fuente

2 respuestas

3

Su principal problema es identificar quiénes son sus clientes "reales". Como el código está abierto, es fácil para cualquiera emular a un cliente. Entonces, ¿cómo puedes hacerlo?

Puedes usar cifrado asimétrico. Como las claves no están dentro del código, no hay forma de que puedan "emular" esas claves. Cada servidor tendrá sus propias claves. Si el cifrado es demasiado para el cliente (y el envío de información no es tan importante), simplemente puede usar alguna clave compartida (como una contraseña), que se enviará siempre junto con la solicitud (algo así como una cookie de sesión) .

De cualquier manera, aún necesita saber quién es quién a través de algún tipo de autorización (por ejemplo, la página de inicio de sesión). El usuario / paso será único por servidor, por lo que puede estar seguro de que quien descargue las claves o la "contraseña", son clientes autorizados.

En el caso de que su sistema no tenga información de inicio de sesión (un software más general) es más complicado (y eso es lo que creo que es su verdadera pregunta) ...

Bueno, me temo que no hay mucho que puedas hacer. Quizás pueda almacenar alguna clave descargada de su servidor durante la instalación (puede darle a cada cliente una clave de producto específica). No es 100% seguro, pero podría ayudar.

La analítica web tampoco es 100% segura. Pueden ser falsos (solo google: 'cómo falsificar el tráfico web'), pero las empresas hacen todo lo posible para identificar a los clientes reales de los falsos con sus propios algoritmos. La ventaja que tienen, es que su código no está abierto, por lo que no sabe exactamente qué están teniendo en cuenta.

Una vez tuve el mismo dilema que tú. En opensource, cada servidor tiene su propia configuración (que es privada), y puede usarla para evitar que personas no deseadas sepan todo sobre su servicio.

Si puedo pensar en otra cosa, extenderé mi respuesta, pero eso es todo a partir de ahora.

    
respondido por el lepe 19.05.2016 - 06:26
fuente
1

Lo que desea para saber que el contenido de una solicitud es de confianza. Para ello, deberías confiar en la aplicación remota y, para ello, verificarías de alguna manera que la aplicación es exactamente tu aplicación. Esto se llama atestación remota. Pero, desafortunadamente esto es imposible a menos que bloquees todo desde el principio. Para ello, deberá poder verificar el proceso de arranque, el inicio del sistema, el inicio de la aplicación, etc. Todo debería estar firmado y usted debería interactuar con el sistema para verificar las firmas. Por lo tanto, las estancias se mantienen principalmente en la teoría, excepto en algunos casos de uso especiales (es decir, las consolas de juegos a menudo están fuertemente bloqueadas).

En la vida real, solo debe tener en cuenta que estas solicitudes se pueden falsificar y utilizar métodos comunes de estadísticas para sanear los datos. Ese es realmente un problema que la mayoría de las encuestas tiene, es decir, las personas también mentirán en las encuestas de la vida real.

    
respondido por el Steffen Ullrich 19.05.2016 - 06:27
fuente

Lea otras preguntas en las etiquetas