[ CGI ]

SSI - Server Side Include 

O que são Server Side Include ?
SSIs são "marcações" colocadas no documento HTML que podem executar ou manipular variáveis de ambiente e arquivos de estatísticas. Uma "marcação" tipica de SSI se parece com :

<!-- comando SSI -->    Veja :

<HTML>
  <BODY>
    <H1> Ultima modificação feita em : </H1> <!--#echo var="LAST MODIFIED"-->
  </BODY>
</HTML>

O comando SSI acima inclui a última data de modificação em relação ao primeiro arquivo aberto para análise. Isso acontece por que o primeiro arquivo aberto pelo servidor define o ambiente onde todos os outros arquivos devem operar.

Veja uma lista dos comandos SSI com uma breve descriçào :
 
config Define o formato de horário, tamanho ou mensagens de erro.
echo Insere os valores das variáveis SSI em páginas HTML.
exec Executa um comando de sistema ou um programa CGI, inserido a saida gerada pelo programa na página da web.
flastmod Insere na página a data de última modificação do arquivo.
fsize Insere na página o tamanho do arquivo.
include Insere o conteudo de arquivos HTML em páginas da web.
Os documentos HTML que contém SSI geralmente terminam com a extenção .shtml;  A utilização mais comum para SSIs ocorre na inclusão de assinaturas ou logotipos de empresas em todos os arquivos criados. O arquivo include fica armazenado no servidor, sendo incluído sempre que um arquivo HTML que contenha um comando include for solicitado; no próximo tópico vamos detalhar melhor o funciomamento dos SSIs.
 

Como o SSI funciona ?
Quando um servidor retorna um arquivo contendo comandos SSI, é necessário ler cada linha do arquivo à procura da sintaxe especial de comandos SSI, ou seja, é realiza uma análise do arquivo (parsing). Os comandos SSI podem estar localizados em qualquer parte dos arquivos HTML. Isso significa que o servidor precisa realizar um esforço extra para localizar os eventuais comandos contidos no arquivo da HTML. Isso também significa que os arquivos SSI são retornados mais lentamente ao cliente da web que os arquivos comuns da HTML. Quanto maior for o número de arquivos SSI que o seu servidor precise processar, mais carga de trabalho será colocada sobre o servidor e, como conseqüência, o servidor passará a operar com menor velocidade, mas isso não quer dizer que você não deva utilizar SSI, basta estar ciente do custo e dos benefícios associados ao uso de arquivos SSI.
 

É perigoso habilitar SSI ?
Se seu servidor permite rodar programas CGI e forem seguidas as mesmas restrições definidas para os programas CGI quando utilados os SSI, não haverá riscos adicionais; caso você não tenha certeza quanto as restrições dos CGIs recomendo desabilitar o comando exec do SSI. O comando exec executa comandos com o UID do servidor web.

Vejamos dois exemplos de uso malicioso do SSI :

Imagine um típico livro de visitas (guestbook) onde as pessoas podem colocar seu comentários, o que acontece se nosso amigo cracker colocar algo do tipo :

<!--#exec cmd="/bin/rm -rf /" -->

Você vai ter uma grande dor de cabeça na proxima vez que algum navegador acessar a página.

Ou algo do tipo :

<!--#exec cmd="find / -name nome_arq -print" -->

Ele vai procura por um arquivo chamado nome_arq. Imagine se nosso amigo colocar isso algumas centenas de vezes no seu livro de visitas, seu servidor com certeza vai parar.

Para ver como desabilitar o SSI em servidores NCSA e Apache, olhe o arquivo access.conf  e tenha certeza de que a diretiva "Includes" não esteja na lista de opções. Aqui está um exemplo do diretório root, mas você deve verificar todos os diretórios definidos :

#/home/www/docs  inicio do root
<Directory  /home/www/docs>

# Aqui pode existir "None", "All" ou qualquer combinação de
# "Indexes", "Includes", "FollowSymLinks",
# "ExecCGI"ou "MultiViews".

Options Indexes FollowSymLinks
</Directory>

Cheque também no arquivo srm.conf, as seguintes linhas :

Addtype text/server-parsed-html .shtml     # todos os arquivos terminados com .shtml pode executas comandos SSI
Addtype text/server-parsed-html .html      # todos os arquivos terminados com .html podem executar comandos SSI

Se você quer rodar os comandos mais simples do SSI no seu servidor coloque "IncludesNOEXEC" na lista de opções para desabilitar o comando exec e só permita a execução de comandos SSI nas páginas com extenção .shtml. Isso vai eliminar a maioria dos problemas; mas você ainda está sujeito a brincadeiras. Por exemplo, considere uma centena destas linhas no seu livro de visitas :

<!--#echo var="LAST MODIFIED" -->

Agora é com você.

Autor :  verdade@absoluta.org

Referência :


<=

http://www.absoluta.org      ---oOo---      verdade@absoluta.org

Copyright © 1998 - 1999  Verdade @bsoluta