Kullanıcı tarafından gönderilen Kodu Demo Alanı için güvenlik önlemleri ve teknikleri

4 Cevap php

Belki de bu gerçekten mümkün değildir. Ama temelde, ben bir pasajı paylaşım sitesi geliştirme oldum ve ben bir 'canlı demo alanı' istiyorum.

Örneğin, bazı pasajları gezen ve Demo düğmesini tıklatın ediyoruz. Yeni bir pencere web kodunu çalıştırır hangi açılır.

Vs vs vs XSS, etiketler, yüklemeler ile pis malware / sürücü, pr0n, - ben bu yapıyor dahil bir gazillion güvenlik riskleri olduğunu anlıyorum

Topluluk pervasızca yaramaz ama belli ki bazı tespit edilmeden gitmek istiyorum (ve birçok durumda, birileri sunuldu kötü olursa olsun bir şey keşfetmek kurbanı olurdu) bayrak gönderimleri mümkün olacaktır.

So I need to know: What should I do - security wise - to make sure that users can submit code, but that nothing malicious can be run - or executed offsite, etc?

Bilginiz için sitem PHP CodeIgniter kullanılarak desteklenmektedir.

Kriko

4 Cevap

Frank işaret ettiği gibi, güvenlik kullanmak bir beyaz liste tekniği yüksek bir düzeyde tutmak istiyorsanız. Bu tabii ki bir fiyata (uygulamak için çok, kısıtlayıcı zor olabilir) ile birlikte gelir.

Alternatif rota bir kara liste tekniği geliştirmektir. yani sadece herhangi bir çan tetikleyen değil kod izin. Daha az şeyleri belirtmek zorunda, ama yeni açıkları yakalamak değil, çünkü bu daha kolaydır.

Her iki teknikleri internet üzerinde bol miktarda mevcut bilgi yoktur.

Parçacıkları çoğu aracılığıyla izin olmayacak gibi CodeIgniters güvenlik fonksiyonları (XSS filtreleme vb) dayanarak çok uzağa almazsınız.

Bunu hatırlamak zorunda olursa olsun:

Kötü niyetli kod, sadece web sitenizin ziyaretçileri zarar hedefliyoruz sanmıyorum. Bir de sizin ayrıştırıcı / kod müfettişi aracılığıyla sunucu uzlaşma hedefliyoruz olabilir. Örneğin, Alice yüklenenler foo pasajı Diyelim ki. Sizin ayrıştırıcı nedeniyle bir XSS gibi kötü niyetli bayrak istismar böylece Alice kasıtlı pasajını yaratmaktadır. Sizin ayrıştırıcı daha da soruşturma için zararlı parçası ile bir veritabanını günceller söylüyorlar. Alice bunu biliyor. XSS ile birlikte veritabanına parçacığını INSERT zaman kötü şeyler her türlü yapmak, böylece, Alice pasajı bazı SQL kodu enjekte etti Yararlanma.

Eğer gerçekten paranoyak iseniz, onun sadece sorumluluk kod parçacıkları incelemek olacaktır izole bir sunucu olabilir. Yani WCS sadece düşük risk sunucu tehlikeye girecekti, ve (umarım) / Denetim durumu düzeltmek için yeterli zaman olurdu.

Umarım bu yardımcı olur.

Beyaz listeye alamaz ya da kara PHP, sadece çalışmıyor. Eğer ben kullanabilir, ya da kötü niyetli işlevlerini kullanarak beni durduramaz komutların bir listesini yazarsanız, yazı beni durdurmak için budur:

$a = 'mai';

{$a .'l'}('somebody@important.com', 'You suck', 'A dodgy message sent from your server');

You cannot whitelist or blacklist PHP.

Bilginiz için sitem CodeIgniter'ı kullanarak PHP tarafından desteklenmektedir

O az biraz alakalı olduğunu düşünüyorsanız üzgünüm Jack, soruya geçerli herhangi bir cevap anlamaktan çok uzağız - geçersiz olanları ayırt edememek dursun.

Eğer makineyi veya müşterilerinizin saldıran birini engeller hangi oluşturmak herhangi bir sandbox müşterileriniz 'baskı' çok daha fazlasını yapmak mümkün olmayacak şekilde kısıtlayıcı olacaktır.

Özel bir chroot cezaevinden Suhosin bir CLI sürümünü çalıştırmak gerekiyordu - ve her komut için ayrı ortamlar maintianing tamamen pratik olacaktır.

C.

O zaman aşağıdakileri yapmanız gerekir, sadece javascript kodunu izin varsayarsak -

  1. Etki alanı ile tanımlanabilir olmayan bir throw-away domain adı satın
  2. Throw-away etki alanında barındırılan bir iframe kullanıcı girilen kod Serve

Bu iGoogle ne aslında. Farklı bir etki alanı kullanıyorsanız, çünkü XSS engeller. Ben farkında değilim, sadece kaçamak kötü kod web sayfasının yerini değiştirebilirsiniz olmasıdır.

Eğer sunucu tarafı kod parçacıkları paylaşmak istiyorsanız, o zaman farklı bir ballgame. Java / jsp parçacıkları, bir sandbox kodunu çalıştırmak için JVMs iç güvenlik sınıfları kullanabilirsiniz. Eğer google eğer bu konuda birçok bilgi bulmak gerekir. Ben bu google (ben bile emin değilim) App Engine kullanır ne olduğunu düşünmek istiyorum.

Java başka bir şey, ben korumak için nasıl emin değilim. Dot Net belki de benzer bir kavram var, ama benzer bir şekilde PHP kod parçacıkları sandbox şüpheliyim.