Hacer un sitio web para ejecutar código [cerrado]

Respuesta 1

Cuidado: si le resulta difícil dividir este proyecto en problemas más pequeños y tácticos, le sugiero encarecidamente que no intente ejecutar el código de otra persona en su sitio. En términos de crear el sitio en sí, sugeriría aprovechar los componentes o servicios preconstruidos donde sea posible: Wordpress, GitHub, etc.

Una vez que tenga los envíos, querrá tener una forma de ejecutarlos de forma segura . A todos los efectos prácticos, esto significa que debe asumir que cualquier máquina en la que ejecute el código de otra persona podría estallar espontáneamente en llamas. Si bien es cierto que algunos de estos idiomas tienen características que debería poder usar para ejecutar código en un "sandbox", probablemente no será lo suficientemente experto en todos estos idiomas para poder protegerlos adecuadamente.

Parece que algo como el EC2 de Amazon podría ser útil: active una máquina virtual cuando necesite ejecutar un envío y deséchela cuando haya terminado. Tienen algunas imágenes preconfiguradas que probablemente sean adecuadas para ejecutar este código, y si algo se daña debido a un código defectuoso o malicioso, no te importa demasiado porque solo lo vas a lanzar lejos cuando hayas terminado.

Respuesta: 2

Hay un sitio que ya hace esto, aunque para un propósito particular: raspar datos.

https://scraperwiki.com/ - A diferencia de jsfiddle, scraperwiki ejecuta código del lado del servidor. Por lo que puedo deducir, es probable que protejan el entorno a través de instancias de Amazon. No estoy seguro de que su código pueda ser auditado y desinfectado por completo, dada la variedad de idiomas y bibliotecas de raspado que admiten.

Creo que la mayoría de las personas están desconcertadas sobre cómo scraperwiki mantiene a raya a los piratas informáticos y a los spammers para que no usen mal sus recursos. Han sido bastante mansos al respecto; o han auditado manualmente cada bit de código ejecutado, o los hackers / spammers aún no los han captado. Dado que el sitio tiene una función específica, probablemente verifiquen la utilización de datos para determinar actividades sospechosas. ... pero, el raspado del sitio de un hombre es el acoso y la inyección de otro hombre por get / post.

Mi presentimiento es que nunca explicarán públicamente cómo es su proceso de auditoría de seguridad.

Si realmente tuvo que hacerlo, la forma mecánica más simple de hacerlo sin virtualización es usar una variante de eval () . Pero no todos los idiomas tienen eso. Lo que lo lleva a la opción B, que es la virtualización . Mejor gente de la que puedo explicar cómo regimentar las máquinas virtuales a este efecto, y le advertiremos adecuadamente sobre dejar que extraños abusen de sus recursos. En cambio, compartiré mi experiencia PHP.

Hace algunos años, hice un proyecto que ejecuta el código sobre la marcha (en una máquina local). A medida que escribe, toma el código a través de ajax y se ejecuta después de cada pulsación de tecla. Aquí hay un video de su comportamiento: http://www.youtube.com/watch?v=Yfxrt2pc3pg .

Media década y 3 prototipos de mejora después, todavía no estoy seguro de cómo bloquearlo responsablemente como un recurso común.

Respuesta: 3

Tengo una tarea en la que tengo que hacer mi lista vinculada que contiene el nombre de una persona y el número de placa de su vehículo que ingresa en un compuesto. pero necesito ordenar la lista en orden alfabético por ...

Establecí la variable de entorno en Servidores de aplicaciones> servidor1> Definición de proceso> Entradas de entorno El nombre de mi propiedad es región y valor en dev. Estoy leyendo el valor de esta propiedad ...

Tengo un servidor de base de datos en la zona horaria "Europa / Londres" y mi servidor web en "Europa / Bruselas". Como ahora es verano, mi servidor de aplicaciones tiene una diferencia de 2 horas. Creé una prueba para reproducir ...

Tengo el siguiente código xml y quiero agregar una nota en el nodo fabricadoMaterial solo si tiene el atributo determinerCode. <manufactureProduct classCode = "MANU"> <...