Jump to content


Photo

Segurança Em Php + Mysql


  • Faça o login para participar
5 replies to this topic

#1 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 17/06/2006, 15:06

Bom, já li - creio eu - a maioria dos tópicos relacionados com segurança em php do fórum (28 páginas ao todo) e mais outros artigos e tutoriais de outros sites e o manual.
Quero montar um site baseado em php + mysql, com uso de Phpmyadmin.
Não uso Apache. Não tenho acesso ao arquivo php.ini do meu host, já que é compartilhado.
O host mantém as seguintes opções (pertinentes ao meu tópico):
magic_quotes : ON
safe_mode: OFF
Além disso, usa a tecnologia Zend - que pelas minhas pesquisas - é um serviço de encripitação do código fonte php (corrijam-me se estiver errada).
E estou preocupada com o quesito segurança, já que esse site será aberto para um grande número de visitantes. Por isso, gostaria de tirar algumas dúvidas asobre as medidas que tomei e pretendo tomar:

01) Fechar a conexão com o comando mysql_close(); realmente aumenta a segurança?
02) Como utilizar em um formulário, um filtro de html que permita apenas algumas tags (como: <b>,<br>,<strike>,<u>,<p>...) e barre outras tags html e scripts maliciosos (como a inserção de javascripts) e, além disso, manter a proteção contra sql injection simultaneamente - atualmente uso esta para injection:
function escape_string ($string) {
   if(version_compare(phpversion(),"4.3.0")=="-1") {
	 mysql_escape_string($string);
   } else {
	 mysql_real_escape_string($string);
   }
}

$title = escape_string($_POST["title"]);
03) No caso de query strings que pega IDs númericos a partir do GET, a utilização de int ($id = int($_GET["id"]);), como abaixo, é suficiente para evitar que utilizem da query para incluir sites externos ou visualizar arquivos importantes do meu servidor?
04) Em um script de login para a minha área de administração que conteria páginas como (Novidades.php, Postar_novidades.php, Processa_Postar.php <- esta última seria apenas a parte que processaria o formulário), como o login deve ser feito? No caso de sessions em que as senhas e os usuários NÃO estejam em um banco de dados e que só há acesso para um usuário - eu -, o "código de restrição" nas páginas protegidas deveria ser colocado na página de processamento do formulário, na página do formulário ou em ambos?
05) A apresentação de erros pode ser manipulada sem o acesso e manipulação do php.ini?
06) Este tipo de login, que capta a própria senha do db, é mais seguro/inseguro que o uso de sessions?
<?
/* Check for values in $PHP_AUTH_USER and $PHP_AUTH_PW */ 

if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW))) {


	/* No values: send headers causing dialog box to appear */
	header('WWW-Authenticate: Basic realm="My Private Stuff"');
	header('HTTP/1.0 401 Unauthorized');
	echo 'Authorization Required.';
	exit; 

} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW))){ 

	/* Values contain some values, so check to see if they're correct */ 

	if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) {
	   /* If either the username entered is incorrect, or the password entered is incorrect, send the headers causing dialog box to appear */
	   header('WWW-Authenticate: Basic realm="My Private Stuff"');
	   header('HTTP/1.0 401 Unauthorized');
	   echo 'Authorization Required.';
	   exit;
	} else if (($PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) {
	   /* if both values are correct, print success message */
	   echo "<P>You're authorized!</p>";
	}
}

De qualquer, obrigada pela ajuda. :)

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 17/06/2006, 15:40

02)
http://www.php.net/strip-tags

03)
Verifique se o valor é numérico.
http://www.php.net/is-numeric

05)
http://br2.php.net/error-reporting
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 17/06/2006, 16:05

02)
http://www.php.net/strip-tags

03)
Verifique se o valor é numérico.
http://www.php.net/is-numeric

05)
http://br2.php.net/error-reporting


Obrigada pelas sugestões. ;)
Só algumas dúvidas:
02) Sobre a strip-tags, ela remove todas as SQL injections - isto é, trata-as como variáveis php - é isso?
03) É necessário usar is-numeric ou int é suficiente para constatar números inteiros?

#4 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 17/06/2006, 18:29

02)
Na verdade, respondi a questão '02' somente a parte que você fala de liberar algumas tags HTML.
A função do strip_tags é remover códigos PHP/HTML de uma string. E nela possui a opção para definir quais tags poderão ser exibidas.

Já quanto a SQL Injection, basta você verificar o estado da config. do magic_quotes, e dependendo, dá escape ou não na informação.
http://www.php.net/g...agic-quotes-gpc
http://www.php.net/mysql-escape-string

03)
Não existe essa função int(), o que existe é intval().

Há como fazer transformações de tipo, como você pode ver em:
http://br2.php.net/int

Mas para verificar se é um inteiro, basta usar is_numeric().
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#5 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 18/06/2006, 12:12

Obrigada pelas sugestões. :)
Vou continuar pesquisando as minhas outras dúvidas.

#6 _tHeFlAsH_

_tHeFlAsH_

    Normal

  • Usuários
  • 105 posts
  • Sexo:Não informado
  • Localidade:Curitiba

Posted 18/06/2006, 15:21

01) http://br2.php.net/m...mysql-close.php

antigamente era mais seguro fechar. mais hoje ele fecha sozinho as conexões, então nem precisa fechar mais. menos codigo, hehe

Edição feita por: _tHeFlAsH_, 18/06/2006, 15:22.

Glauco Maschio
www.glaucomaschio.com.br




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq