Я настраиваю простой веб-редактор кода с помощью CodeMirror, чтобы помочь учащимся изучить основы HTML, CSS и JavaScript.
Я хочу, чтобы учащиеся могли сохранять свой код, чтобы он был виден в отдельном окне браузера с собственной ссылкой, которой можно поделиться с друзьями и семьей, чтобы продемонстрировать свою работу (например, mydomain.com/users/имя пользователя/test.html).
В настоящее время у меня есть следующий PHP, но я знаю, что мое использование $content
совсем небезопасно:
if ($_POST['type'] == 'save') {
$content = stripslashes($_POST['code']);
$username = addslashes(strip_tags($_POST['username']))); //i.e. markrummel
$filename = addslashes(strip_tags($_POST['filename']))); //i.e. test, index
$ext = addslashes(strip_tags($_POST['filetype']))); //i.e. html, css, js
$path = '/users/' . $username . '/';
$URL = $path . $filename . '.' . $ext;
file_put_contents($URL, $content);
}
В большинстве случаев $content
должен быть безопасным HTML, CSS или JavaScript, например: <p>My name is Mark</p>
, но я хочу быть готовым на случай, если что-то вредоносное будет помещено в редактор кода для сохранения.
Любые предложения о том, как я могу безопасно сохранить и отобразить их код? Есть ли способ изолировать/изолировать папку каждого пользователя от других пользовательских папок и остальной части веб-сайта?
Возможно, нет безопасного способа сделать это, и я не должен позволять никому, кому я не доверяю, сохранять код на моем сервере, но если есть безопасный способ сделать это... это было бы здорово для этого проекта! Если нет, то я придумаю что-нибудь другое.
Спасибо за любую помощь или понимание, которое вы можете предложить! -Отметка
$contents
, чтобы сохранить большую часть кода, чтобы он отображался правильно, но удалял потенциально вредоносный код? - person Mark Rummel   schedule 13.04.2012/users/…
, отображалось как обычный текст. - person Gumbo   schedule 13.04.2012AddType text/plain .pl .cgi .php
, но не знаю, как написать это в httacess, поэтому это применимо только к/users/...
. Кроме того, какие еще расширения я хотел бы включить?.asp
? Любые другие? Еще мне попадались:Options -ExecCGI AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
и<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$"> ForceType text/plain </FilesMatch>
. Это то, что нужно учитывать? - person Mark Rummel   schedule 13.04.2012