Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Davicamarinha

com críticas

Recommended Posts

Ola a todos,

 

Estou recorrendo aqui, pois sei que existe pessoas sérias que sabem muito mais programação do que eu. Sou humilde em pedir ajuda quando nao sei. Recentemente fiz um sistema de promoções para um "cliente", e o mesmo pegou o sistema e mostrou para meu concorrente, o qual colocou milhares de defeitos no mesmo. Eu nao faço ideia do que sao esses defeitos e se realmente pode causar os problemas que ele mencionou. Segue a lista de defeitos mencionados:

 

- Desenvolvimento sem exibir mensagens de erro E_NOTICE.

Esse recurso pode causar diversos problemas, desde a incompatibilidade em atualizações do PHP (se o mesmo definir constantes com os nomes de variáveis utilizadas), até falhas de segurança (uso de variáveis não declaradas previamente).

Por padrão, todo o sistema do LondrinaTur foi desenvolvido com notificação de erro em E_ALL, para evitar esses problemas.

 

 

- Banco de dados não otimizado com índices e afins

Bancos de dados deveriam ser capazes de procurar em milhares de registros em centésimos de segundos. No entanto, os bancos de dados em questão começarão a apresentar lentidão após algumas centenas de registros. (Ex: Na 3a promoção, cada uma com 500 participantes, você já terá um banco de dados com 1500 resultados, que demorará quase 1 segundo para ser processado. Na 30ª promoção, você terá uma lentidão de aproximadamente 10 segundos a cada consulta, além de sobrecarregar o servidor, o que pode causar a interrupção dos serviços por parte da Locaweb, já que você não está num servidor dedicado)

 

 

- Padrões de segurança do manual ignorados, como magic_quotes

 

 

- Sem filtro de informações digitadas pelo usuário

 

 

- Diversas conexões ao banco de dados sendo abertas para o mesmo processo

Isso pode causar rejeições e mensagens de erro se esses scripts forem acessados por, digamos, 10 pessoas simultaneamente (o que não é difícil, tendo em vista o crescente número de 800 visitas/dia, e o banco de dados não otimizado, que segura a conexão por mais tempo do que deveria).

 

 

- Conexões ao banco de dados não sendo fechadas.

Normalmente as conexões são fechadas automaticamente, mas algumas podem permanecer abertas aguardando o timeout, o que pode acabar bloqueando conexões legítimas.

 

Agradeço antecipadamente por qualquer ajuda a respeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi, você quer que explique o que significa cada um desses items ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque isso no começo dos seus scripts

 

error_reporting(E_ALL | E_STRICT);

ini_set('display_startup_errors', true);

ini_set('display_errors', true);

 

o resto só vendo como você ta fazendo

 

mas adianto esses links para você estudar:

 

http://www.php.net/manual/pt_BR/function.g...-quotes-gpc.php

http://www.php.net/manual/pt_BR/security.php

http://www.php.net/manual/pt_BR/security.d...l-injection.php

 

regra basica de uma boa conexao com o banco de dados, abra o banco somente na hora que for usar e feche em seguida

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque isso no começo dos seus scripts

 

error_reporting(E_ALL | E_STRICT);

ini_set('display_startup_errors', true);

ini_set('display_errors', true);

 

o resto só vendo como você ta fazendo

 

mas adianto esses links para você estudar:

 

http://www.php.net/manual/pt_BR/function.g...-quotes-gpc.php

http://www.php.net/manual/pt_BR/security.php

http://www.php.net/manual/pt_BR/security.d...l-injection.php

 

regra basica de uma boa conexao com o banco de dados, abra o banco somente na hora que for usar e feche em seguida

Boas dicas fabyo!

Eu mesmo,ao invés de tirar os warnings,coloco um error_handling.

Fiz um tutorial...sobre programação OO...onde explico,vou upar,mas:

http://br.php.net/manual/pt_BR/function.se...ror-handler.php

 

O tuto terá versões,então o mais que tiver dúvida me falo que falo sobre!

Fui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo da consulta que eu faço no BD

 

$query = "SELECT * FROM promo_users WHERE promo_id = '$id'";
		$recordset = mysql_query ( $query , $connection ) or die ( mysql_error ( ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue mais um link http://forum.imasters.com.br/index.php?showtopic=229485

 

mais o que vem antes disso

 

$query = "SELECT * FROM promo_users WHERE promo_id = '$id'";

$recordset = mysql_query ( $query , $connection ) or die ( mysql_error ( ) );

E aproveite as críticas!!!

 

E diga que o cara que disse que

- Padrões de segurança do manual ignorados, como magic_quotes

Está totalmente fora de sintonia com o php, pois essa função já se tornou obsoleta e não funcionará mais a partir do php6

 

Ta com cara de gerador de códigos via Dreamweaver o cara que disse isso

 

asausuasuausauasa http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

1- seria bom criar um arquivo de log e mensagens de erro amigaveis ao usuario, seria desagradavel ver uma mensagem paser error inexpered '}' in line 28 file index.php

 

2-criar relacoes entre tabelas eh uma boa, embora numa consulta tb leve tempo....essas relacoes sao mais eficazes numa tabela do tipo innodb...mas creio que levaria mais tempo, pq numa consulta a apenas uma tabela, com estes indices seria consultado a segunda tabela, levando mais tempo, o bom seria criar chaves estrangeiras

 

3-magic quotes eh prima distante da register globas, o que facilitaria sql injection,

 

4- seria bom usar filtro anti-sql injection e anti xss

 

5-o bom mesmo seria abrir e fechar as conexoes somente na hora das operacoes, para a conexao nao ser interceptada e capturada por um sniffer

 

6-o de cima

 

7- abandona esse cliente, o cara esta expondo seu codigo para ver se barateia o preço do serviço, direito dele, mas esta manchando sua imagem profissional e moral, ele ja pagou pelo codigo?se nao, entao ele nao pode expor a seu concorrente, pq o "produto" nao esta na mao dele, de acordo com a INPI, Instituto Nacional, de Propriedades Industriais, algo assim, caso keria patentear seu sistema, ele eh seu, ate que provem o contrario, e tb od direitos autorais dizem isso...

 

:D andei pesquisando sobre registro de sistemas ontem....

 

essa seria minha acao....se ker q o outro faça, mande o outro fazer, nao pegue meu codigo e fic mostrando como se fosse banana, eu sei como eh dificil fazer um sistema do zero e como somos desvalorizados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue um exemplo de consulta no BD

 

$recordset = mysql_query ( $query , $connection ) or die ( mysql_error ( ) );

 

outra coisa, esse tipo consulta é falha ....

na verdade ela so e executada pq o mysql_query esta antes do die(...)

 

e um problema de precedencia que eu havia discutido aqui anteriormente,

 

como o caso

 

$a = false or true;
var_dump($a) // false;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente é uma coisa muito confusa, conversei com outros programadores e eles falaram q isso era besteira, vcs ja me falam coisas diferentes, em tutoriais q vi na net, falam que para uma consulta ser otimizada ela tem q ser simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ajudar, o codigo inteiro

 

include("connect.php");
		$id = $_GET["cod"];
		$filename = date("dmY") . $id;
		$query = "SELECT * FROM promo_users WHERE promo_id = '$id'";
		$recordset = mysql_query ( $query , $connection ) or die ( mysql_error ( ) );

		$columns = mysql_num_fields ( $recordset );
		$rows = mysql_num_rows ( $recordset );
		
		$row_recordset = mysql_fetch_array ( $recordset , MYSQL_NUM );
		
		
		header('Content-type: application/x-msdownload');
		header('Content-Disposition: attachment; filename='.$filename.'.xls');
		header('Pragma: no-cache');
		header('Expires: 0');
		
			for ( $i=0; $i < $columns; $i++ ) {
				$spreadsheet .= strtoupper ( mysql_field_name ( $recordset , $i ) ) . "\t";
			}
			
			$spreadsheet .= "\n";
		
			for ( $i=0; $i < $rows; $i++ ) {
				$spreadsheet .= "\n";
					for ( $n=0; $n < $columns; $n++ ) {
						$spreadsheet .= $row_recordset[$n]."\t";
					}
				$row_recordset = mysql_fetch_array ( $recordset , MYSQL_NUM );				
			}
			
		print "$header\n$spreadsheet";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é mano estude mais sobre segurança!

 

Principalemente com consultas via GET

 

usando strip_tags você ja escapa da agullha o restante você aguenta!!!

 

e umas das formas correta de verificar o id via url seria assim

 

if (isset($id = $_GET['cod'])){

 

$id = addslashes(htmlentities($id = $_GET['cod']));

 

}

 

direto seu código está totamente vunerável

 

tambem faltou fechar a conexão

 

http://www.php.net/mysql_close

 

--------------------------------------------------------------------------------------------------------------------------------------

Leia mais a respeito todos links abaixo e o que a galera colocar pra te ajudar

 

http://www.php.net/manual/pt_BR/function.m...free-result.php

 

http://www.php.net/manual/pt_BR/function.strip-tags.php

 

http://www.php.net/manual/pt_BR/function.addslashes.php

 

http://www.php.net/manual/pt_BR/function.htmlentities.php

 

http://www.php.net/manual/pt_BR/function.isset.php

 

Abraços e sucesso

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.