checklist de segurança no php
Ao configurar o php é necessário ter em atenção alguns aspectos de segurança.
; php.ini
allow_url_fopen = Off ; Disable URLs for file handling functions
register_globals = Off ; Make sure this hellish fiend is dead
open_basedir = /var/www/htdocs/files ; Restrict file handling functions to a subdirectory
safe_mode = Off ; Disable this, the next is often more practical
safe_mode_gid = On ; Enable safe mode with group check
safe_mode_exec_dir = /var/www/binaries ; Restrict execution functions to this directory
safe_mode_allowed_env_vars = PHP_ ; Restrict access to environment variables
max_execution_time = 30 ; Max script execution time
max_input_time = 60 ; Max time spent parsing inputs
memory_limit = 16M ; Max memory size used by one script
upload_max_filesize = 2M ; Max upload file size
post_max_size = 8M ; Max post size
display_errors = Off ; Do not show errors on screen
log_errors = On ; Log errors to log file
expose_php = Off ; Hide presence of PHP
# Apache configuration or .htaccess
Order allow,deny
Deny from all
sapo sessions php
PHP
Ontem fui a assistir a uma sessão de php
Aqui fica um pequeno resumo da sessão :
Optimização de código
Usar sempre que possivel require_once em vez de include.
Nas strings usar o explode em vez do preg_split.
Usar arrays o php trabalha bem com arrays.
Evitar gravar as sessões e cookies em ficheiros, pois o acesso ao filesystem é sempre mais lento, de preferência utilizar o memcached.
Reduzir ciclos, querys , stats, remote resquests.
Não misturar HTML no meio da lógica . HTML Deve ser HTML.
Evitar as mensagens de erro do php, warnings, notices pois se aparecem é má programação.
<– Apache –>
Directory index
Se o nosso ficheiro de index é index.php deve estar logo na 1ª linha do directory index.
A maior parte dos casos temos.. index.html,index.js, index.asp, index.htm e só no fim é que aparece o index.php
.htaccess
Se não estamos a utilizar ficheiros .htaccess desligar o mesmo do apache.
Evitar os symlinks.
Novidades do PHP 5
Namespace
Reflection
Late Static Binding
Interface
Final Class
anonymous function
clone
SPL – Standard PHP library
SOLR
DATETIME
definir um date_default (sempre que se trabalha com datas)
Timezone
Memcache(d)
PECL
SQL – PDO
DataBase access layer
Simple XML
Webservices
O auth
SOAP
Streams
- Stream filters
–Stream contexts
–Stream erros
Magic quotes
Filter sanitize
Special chars
SuhosinPATH
desactivar CURL
desactivar remote links
Banir Ficheiros / binary
Zend server
Zend platform
Zend guard
Zend studio edit (debug)
APC (op code cache)
Strace
XDebug
Webgriad
Boas Práticas
Utilizar ficheiros de config, classes, definir sempre o time zone, classe debug, classe procedure, classe log, fire php.
Smarty Templates
Quem usa ?
Zend , xcart, xoops, open
Objectivo
Separar a lógica da apresentação
Estrutura de pastas do smarty
libs
templates
templates_c
cache
As smarty templates atenuam o cross site (XSS – injecção e colocação de exploits)
Frameworks php
Log4PHP
download php 6
O php 6 sofreu alterações importantes a nível de segurança, que vem melhor em muito esta linguagem de programação, abaixo poderão ver a lista de alteraçoes. esta nova versão 6 só deve estar disponível no final do ano.
http://www.ibm.com/developerworks/opensource/library/os-php-future/?ca=dgr-lnxw01PHP-Future
Download php
30 dicas boas para quem se está a iniciar no PHP
30 dicas boas para quem se está a iniciar no php.
http://net.tutsplus.com/tutorials/php/30-php-best-practices-for-beginners/
ligar postgres com PHP
Arquivos de Configuração
O postgres possui basicamente 2 arquivos de configurações responsáveis pela conexão, eles são:
- postgresql.conf aqui você precisa definir que o seu banco de dados irá receber conexão através de TCP/IP, até a versão 7.9 do postgres esta configuração era feita assim:
tcpip_socket = trueA partir da versão 8 isso é feito assim:listen_addresses = ‘*’ port = 5432 - pg_hba.conf este é o arquivo que define quem pode acessar o que e de qual forma: para permitir que qualquer IP possa acessar qualquer banco adicione esta linha no arquivo host all all 0.0.0.0 0.0.0.0 password Se quiser que apenas 1 IP específico possa acessar a máquina então host all all 200.200.200.200/32 password A palavra password define que para você acessar o banco tem que digitar a senha, existe a palavra trust que diz ao banco para nao pedir senha então tenha cuidado com este tipo de configuração
Após mexer nestes dois arquivos reinicie o banco. Para acessar o seu banco através do terminal use o comando: psql –h 200.200.200.200 –U postgres –d banco Fique atento aos firewall pois eles podem barrar a sua conexão com o banco, e mais uma dica para que a conexão possa ser estabelecida no CentOS é necessário desativar o SELinux, que por padrão na instalação fica ativado: vim /etc/sysconfig/selinux e configure o SELINUX=disabled
Exemplo de Conexão PHP para Teste
try {
$db = new PDO("pgsql:host=localhost dbname=datacentro user=postgres password=data1234");
$sql = 'SELECT * FROM pessoa';
foreach ($db->query($sql) as $row) {
print $row['cod'] . "\t";
print $row['nome'] . "\t";
}
} catch (PDOException $e) {
print $e->getMessage();
}
die("fim");
Referência
http://battisti.etc.br/2009/09/28/postgres-permission-denied-is-server-running/http://www.cyberciti.biz/faq/postgresql-remote-access-or-connection/
http://dickrips.wordpress.com/2009/01/16/apache-php-postgresql-no-centos-e-fedora
Open cart php
OpenCart é uma platafroma de comércio online baseado em PHP. Esta plataforma suporta o sistema de “carrinho de compras” e permite a criação de uma solução de comércio eletrónico, ideal para pequenas empresas a um custo minimo.
Entre as suas caracteristicas mais interesasntes encontram-se a possibilidade de criar categorias, produtos e marcas, sem qualquer tipo de limite, o suporte a várias moedas, a possibilidade dos clientes inserirem reviews dos produtos, redimensionamento automático das imagens do produtos e o suporte a mais de 20 sistemas de pagamento.
A interface é agradavél e extremamamente intuitiva e o backoffice é bastante funcional.
Um demo deste serviço pode ser experimentado aqui, e o download está disponivel aqui.
Fonte :
| Nélson Silva escreve no PL todas as quintas um artigo sobre OpenWeb. Podem encontrar mais artigos como este no seu blog pessoal. |
Open web tools mozilla labs
A mozilla labs criou um directório, onde podem ser encontradas de uma forma simples e rápida várias “ferramentas” para programadores, tentaram reunir numa só página algumas das ferramentas conhecidas dos programadores.

E claro tudo ferramentas opensource.
A página ainda dispõem de um formulário de pesquisa, muito útil caso queiram pesquisar só pelo design , código etc..
Download PHP 5.3.0 já saiu

Foi lançada a versão 5.3.0 do PHP. Segundo a equipa de desenvolvimento, esta foi a maior implementação das versões série 5. Ela traz, além de várias novidades, uma porção de bugs foram corrigidos (mais de 140…).
Algumas novidades em destaque, são:
Namespaces
“Namespace” é um conceito amplamente utilizado em várias áreas da informática.
Imaginem um sistema operativo com dois arquivos com o mesmo nome. Como eles não podem estar dentro da mesma pasta, certo? Sendo assim, criamos links de pastas diferentes para cada um deles.
No PHP seria como criar variáveis dentro de namespaces.
Qualquer código PHP pode ser colocado em namespaces, mas apenas três tipos de código (Class, Funções e Constantes) são afectados por elas.
A utilidade disso é evitar problemas com nomes de variáveis do sistema ou de programas feitos por terceiros. Também evita ter que criar nomes longos para os objectos para impedir que não haja conflitos com outros objectos do mesmo nome.
Assim como outras funções do PHP (como a header() por exemplo), os namespaces devem ser definidos antes de qualquer echo ou print.
Existem dois tipos de namespaces: os namespaces comuns e os sub-namespaces. Veja um exemplo de declaração de namespaces:
Late StaticBinding
Outra novidade é a implementação do conceito de “Late Static Binding”. Usando Late Statics Bindings, a resolução de métodos não é feito na classe onde ele foi criado, mas sim de forma hierárquica, seguindo a ordem de execução. Para entender melhor, veja o exemplo comparativo entre a implementação que tínhamos, e a nova possibilidade:
Agora com Static Bindings temos:
GC (Garbage Colector)
Agora é possível armazenar o resultado de variáveis em cache. Desta forma, mesmo que o estado de sua variável mude, é possível recuperar um valor anterior. Veja o exemplo de uso:
gc_enable (); // activa o cache que irá guardar os resultados
$valor = ‘Primeiro valor’;
echo $valor. ‘‘;
$valor = ‘Segundo valor’;
echo $valor. ‘‘;
$anteriores = gc_collect_cycles(); // apanha os valores anteriores em cache
$valor = $anteriores [’valor’] [0]; // apanha a posicao 0 da posicao de nome ‘valor’
gc_disable($anteriores); // limpa os valores apanhados e desaloca da memoria
echo $valor . ‘‘;
/*
Esse script irah retornar:
Primeiro valor
Segundo valor
Primeiro valor
*/
?>
Funções Anônimas
Funções Anônimas permitem criar funções sem um nome específico. Elas são muito úteis quando usadas como parâmetros de funções de callback (como preg_replace_callback), mas podem ter vários outras utilidades. Veja um exemplo:
Além dessas novas funções, existem alterações nos drives de ligação com o MySQL, alterações de comportamento em funções já amplamente utilizadas como a função session(), md5(), opendir().
Link para download : http://php.net/downloads.php
Fonte: http://samuelcorradi.com.br

