Author

Topic: Codigo Fonte em PHP de um projecto de um site de Trafic Exchange (Read 4247 times)

member
Activity: 98
Merit: 10
Update 3:
-> Adicionado opção para adicionar ou remover Administradores
member
Activity: 98
Merit: 10
Esse seu sistema anti injection se baseia na função sql_regcase() que é considerada obsoleta (deprecated) a partir do PHP 5.3.0 e foi removida do PHP 7. Ou seja, o script já não funciona no PHP 7.

Aquele arquivo json.php também não é necessário, basta usar as funções nativas json_encode()/json_decode().

Coitado do ZenJB Grin

A melhor solução é mesmo migrar para PDO ou MySQLi.

Já agora, se alguém estiver interessado, eu há alguns meses criei esta classe PHP para interagir com base de dados MySQL:
https://github.com/Nixtren/MySimplifiedSQL

Recentemente descobri outro projeto que tem o mesmo objetivo que a classe que criei, mas pelos vistos é mais completa:
http://medoo.in/

Depois há sempre a outra alternativa, que é usar PDO/MySQLi há moda tradicional, escrevendo as querys manualmente Smiley



Infelizmente não posso migrar para o PDO ou MySQLi pois tou limitado ao software usado para criar servidor PHP, Apache e MySQL no meu aparelho android (que é o aparelho que uso) Sad
member
Activity: 78
Merit: 10
Esse seu sistema anti injection se baseia na função sql_regcase() que é considerada obsoleta (deprecated) a partir do PHP 5.3.0 e foi removida do PHP 7. Ou seja, o script já não funciona no PHP 7.

Aquele arquivo json.php também não é necessário, basta usar as funções nativas json_encode()/json_decode().

Coitado do ZenJB Grin

A melhor solução é mesmo migrar para PDO ou MySQLi.

Já agora, se alguém estiver interessado, eu há alguns meses criei esta classe PHP para interagir com base de dados MySQL:
https://github.com/Nixtren/MySimplifiedSQL

Recentemente descobri outro projeto que tem o mesmo objetivo que a classe que criei, mas pelos vistos é mais completa:
http://medoo.in/

Depois há sempre a outra alternativa, que é usar PDO/MySQLi há moda tradicional, escrevendo as querys manualmente Smiley


sr. member
Activity: 427
Merit: 250
Esse seu sistema anti injection se baseia na função sql_regcase() que é considerada obsoleta (deprecated) a partir do PHP 5.3.0 e foi removida do PHP 7. Ou seja, o script já não funciona no PHP 7.

Aquele arquivo json.php também não é necessário, basta usar as funções nativas json_encode()/json_decode().
member
Activity: 98
Merit: 10
Update 2:
-> Sistema Anti SQL-Injection implementado em todos os scripts
-> Painel administrativo adicionado (Ainda incompleto)
sr. member
Activity: 518
Merit: 250
mais tem programas que quebras as senhas mole, testando automaticamente em uns 28 sites, entre eles uns sites russos bem legais :3
sr. member
Activity: 427
Merit: 250
Em vez da função md5 é melhor usar a função password_hash que é mais atual, melhor do que aninhar funções MD5 (vc pode inclusive configurar o "custo" nas opções da função).

Também hoje em dia é muito mais recomendado o uso da classe PDO que já elimina boa parte das chances de SQL injection: http://php.net/manual/en/intro.pdo.php
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
(...)
A palavra passe é processada da seguinte forma:
1) Pega na palavra passe e junta a um string e faz o hash disso
2) Pega no hash obtido anteriormente como se fosse uma string e junta a outra string diferente e faz o hash em md5 disso
3) Pega no hash obtido anteriormente como se fosse uma string e junta a outra string diferente e faz o hash em bcrypt disso
4) Pega no hash obtido anteriormente e salva na base de dados

Imaginemos que um utilizador ganha acesso a base de dados e obtem o hash obtido no passo 3
A minha pergunta era: Como é que ele sabe o hash obtido no passo 2? Não tem de passar pelo hash obtido no passo 3 primeiro?

Nesse caso você está usando a forma que eu dei como exemplo de ser mais segura. Você está acrescentando informação a cada passo:

(...)
Se quiser aumentar a segurança o que pode fazer é concatenar a senha novamente na hash antes de fazer  o segundo passo:

HASH(P) = g(P || h(P))

(onde || é o operador de concatenação de strings).

Note que isso só funciona se essa string diferente for desconhecida do atacante.

Se a string for conhecida (mesmo que variável), um atacante que quebrar o md5 não precisa de brute force. Só precisa calcular bcrypt(string || md5_quebrado).

Se você está dizendo que o atacante demoraria mais tempo para fazer um ataque de força bruta, lembre que fazer um ataque de força bruta sobre MD5 gastaria mais tempo que a idade do universo, então dificultar ataques de força bruta é perda de tempo. Estamos falando de caso a segurança do md5 seja quebrada.
member
Activity: 98
Merit: 10
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).
Claro que sim mas caso um utilizador ganhe acesso ao hash da palavra passe (seja por SQL-Injection ou de outra forma) so tera acesso ao "hash final". Ele nao tera que fazer brute force nesse (Neste exemplo o hash feito pelo bcrypt) para obter o outro hash juntado a uma string para  depois fazer brute force no outro hash feito pelo md5?

Não, ele só precisa fazer bruteforce no md5, o bcrypt decorre naturalmente.
Como e q ele sabe o hash feito pelo md5?

fazendo o bruteforce. Não entendi a pergunta.
A palavra passe é processada da seguinte forma:
1) Pega na palavra passe e junta a um string e faz o hash disso
2) Pega no hash obtido anteriormente como se fosse uma string e junta a outra string diferente e faz o hash em md5 disso
3) Pega no hash obtido anteriormente como se fosse uma string e junta a outra string diferente e faz o hash em bcrypt disso
4) Pega no hash obtido anteriormente e salva na base de dados

Imaginemos que um utilizador ganha acesso a base de dados e obtem o hash obtido no passo 3
A minha pergunta era: Como é que ele sabe o hash obtido no passo 2? Não tem de passar pelo hash obtido no passo 3 primeiro?
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).
Claro que sim mas caso um utilizador ganhe acesso ao hash da palavra passe (seja por SQL-Injection ou de outra forma) so tera acesso ao "hash final". Ele nao tera que fazer brute force nesse (Neste exemplo o hash feito pelo bcrypt) para obter o outro hash juntado a uma string para  depois fazer brute force no outro hash feito pelo md5?

Não, ele só precisa fazer bruteforce no md5, o bcrypt decorre naturalmente.
Como e q ele sabe o hash feito pelo md5?

fazendo o bruteforce. Não entendi a pergunta.
member
Activity: 98
Merit: 10
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).
Claro que sim mas caso um utilizador ganhe acesso ao hash da palavra passe (seja por SQL-Injection ou de outra forma) so tera acesso ao "hash final". Ele nao tera que fazer brute force nesse (Neste exemplo o hash feito pelo bcrypt) para obter o outro hash juntado a uma string para  depois fazer brute force no outro hash feito pelo md5?

Não, ele só precisa fazer bruteforce no md5, o bcrypt decorre naturalmente.
Como e q ele sabe o hash feito pelo md5?
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).
Claro que sim mas caso um utilizador ganhe acesso ao hash da palavra passe (seja por SQL-Injection ou de outra forma) so tera acesso ao "hash final". Ele nao tera que fazer brute force nesse (Neste exemplo o hash feito pelo bcrypt) para obter o outro hash juntado a uma string para  depois fazer brute force no outro hash feito pelo md5?

Não, ele só precisa fazer bruteforce no md5, o bcrypt decorre naturalmente.
member
Activity: 98
Merit: 10
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).
Claro que sim mas caso um utilizador ganhe acesso ao hash da palavra passe (seja por SQL-Injection ou de outra forma) so tera acesso ao "hash final". Ele nao tera que fazer brute force nesse (Neste exemplo o hash feito pelo bcrypt) para obter o outro hash juntado a uma string para  depois fazer brute force no outro hash feito pelo md5?
sr. member
Activity: 518
Merit: 250
eu já iria passar um scan de vul no site mais o amigo ja se adiantou a mim rsrsrsrs
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).

Fui pesquisar mais e você tá certo girino. Não diminui, mas também não aumenta a segurança.

Se quiser aumentar a segurança o que pode fazer é concatenar a senha novamente na hash antes de fazer  o segundo passo:

HASH(P) = g(P || h(P))

(onde || é o operador de concatenação de strings).
full member
Activity: 194
Merit: 180
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).

Fui pesquisar mais e você tá certo girino. Não diminui, mas também não aumenta a segurança.
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
(...)
MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).

Entrando em mais detalhes pra quem for curioso. A segurança de uma hash está em garantir que é dificil encontrar duas senhas P e P' tal que:

HASH(P) = HASH(P').

Se eu encadeio duas hashes g() e h() da seguinte forma:

HASH(P) = g(h(P))

Então Se existe P' tal que

h(P) = h(P')

Temos que:

HASH(P) = g(h(P)) = g(h(P')) = HASH(P').

Ou seja, se a segurança de h() for comprometida, a segurança de toda a sequencia está comprometida.
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?

Náo, a segurança de uma sequencia de hashes é igual a segurança da m=primeira hash (no caso, o md5).
member
Activity: 98
Merit: 10
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.


MD5 não é um mecanismo de encryptação mas sim um mecanismo para gerar hashes tal como o bcrypt é  Tongue
Surgiu agora uma duvida ao ver o seu post. Se eu usar o bcrypt em cima do MD5 será que aumenta a segurança?
full member
Activity: 194
Merit: 180
Update 1:
-> Palavra passe encriptada três vezes usando MD5

A cada novo hash MD5 você está aumentando a probabilidade de collision, reduzindo a segurança da senha.

E MD5 não é um bom mecanismo de encriptar senhas pela facilidade de se fazer brute force. Use bcrypt.
member
Activity: 98
Merit: 10
Update 1:
-> Implementado Anti SQL-Injection
-> Paginas Login e Register agora têm Protecção Anti SQL-Injection
-> Palavra passe encriptada três vezes usando MD5
legendary
Activity: 3304
Merit: 1617
Olá Mundo,

Eu estou desenvolvendo um site PTC feito em PHP.
No inicio ia fazer host do site mas o meu pc deu peça
Então, tornei o site OpenSource para que qualquer um que queira começar um site deste tipo possa ter um grande impulso.
Fiz upload de todos os arquivos no GitHub.

Link do GitHub: http://zenjb.github.io/TXZone/

REQUISITOS
- Apache
- MySQL
- Msmtp
- V5.5.13 PHP
- Phpmyadmin
- 2 Contas no [Suspicious link removed]o configurar o site?
1> Configure o Apache, MySQL, msmtp e o PHP
2> Crie 2 contas carteira no Blockchain
3> Ative o API em ambos as carteiras do BlockChain
4> Crie uma base de dados no MySQL chamada txzone atraves do phpmyadmin
5> Importar o arquivo database.xml para a base da dados txzone
6> COnfigure o ficheiro db.php em /scripts
7> Autorize o site a  acessar o API de suas carteiras

Como resetar as tarefas concluidas pelos usuários (deve ser feito diariamente e a uma hora fixa para permitir que os usuário façam as suas tarefas no dia seguinte):
1> Em phpmyadmin vá a txzone -> tasks e apague os dados

Como activar os levantamentos de Bitcoin:
1> Em phpmyadmin abra a base de dados txzone -> webcontrol e defina o valor de pagamento 0-1

Se faltar alguma coisa, por favor responda a este tópico

Se você usar este código-fonte por favor atribua-me os devidos créditos

Se você quiser me comprar um café, faça um donativo Smiley

Endereço Bitcoin: 1EWhnNyoLpMHvKNETyRCn95tDaJmsPjuSX

Disclaimer:
I am not responsible if you or someone loses Bitcoins, or if you get hacked dued to the lack of security or dued to another thing that may happen.
This is a project in development. So, you will experience bugs, lack of feactures, and many other things...
USE IT AT YOUR OWN RISK.


Legal o seu projeto. Pena que as fees dos Bitcoins arrebentam com qualquer projeto que envolva micro-pagamentos. É uma pena.
member
Activity: 98
Merit: 10
Muito obrigado por detectar essa vulnerabilidade
Vou já reparar essa vulnerabilidade agora  Smiley
member
Activity: 78
Merit: 10
Parabéns pela iniciativa Smiley

Geralmente quando vejo um novo projeto open-source gosto sempre de ir espreitar o código em busca de falhas de segurança. Fiz uma análise preliminar e aqui está uma vulnerabilidade:

  • Vulnerabilidade SQL Injection em TXZone/login/index.php. O user input não é sanitizado pelo script. Uma pessoa maliciosa poderia esvaziar a tabela de membros fazendo login com o username "'; TRUNCATE TABLE members; --". Recomendo você pesquisar mais sobre o assunto.

Qualquer dúvida é só perguntar Wink

P.S: E já agora, quem me quiser contratar está à vontade Grin
member
Activity: 98
Merit: 10
Obrigado já tirei o espaços
 Deve ter sido ao traduzir que ficou com os espaços :p
legendary
Activity: 2296
Merit: 1170
Advertise Here - PM for more info!
Olá Mundo,

Eu estou desenvolvendo um site PTC feito em PHP.
No inicio ia fazer host do site mas o meu pc deu peça
Então, tornei o site OpenSource para que qualquer um que queira começar um site deste tipo possa ter um grande impulso.
Fiz upload de todos os arquivos no GitHub.

Link do GitHub: https://github.com/ZenJB/TXZone/

REQUISITOS
- Apache
- MySQL
- Msmtp
- V5.5.13 PHP
- Phpmyadmin
- 2 Contas no [Suspicious link removed]o configurar o site?
1> Configure o Apache, MySQL, msmtp e o PHP
2> Crie 2 contas carteira no Blockchain
3> Ative o API em ambos as carteiras do BlockChain
4> Crie uma base de dados no MySQL chamada txzone atraves do phpmyadmin
5> Importar o arquivo database.xml para a base da dados txzone
6> COnfigure o ficheiro db.php em /scripts
7> Autorize o site a  acessar o API de suas carteiras

Como resetar as tarefas concluidas pelos usuários (deve ser feito diariamente e a uma hora fixa para permitir que os usuário façam as suas tarefas no dia seguinte):
1> Em phpmyadmin vá a txzone -> tasks e apague os dados

Como activar os levantamentos de Bitcoin:
1> Em phpmyadmin abra a base de dados txzone -> webcontrol e defina o valor de pagamento 0-1

Se faltar alguma coisa, por favor responda a este tópico

Se você usar este código-fonte por favor atribua-me os devidos créditos [/ b]

Se você quiser me comprar um café, faça um donativo Smiley

Endereço Bitcoin: 1EWhnNyoLpMHvKNETyRCn95tDaJmsPjuSX

Disclaimer: [/ b]
I am not responsible if you or someone loses Bitcoins, or if you get hacked dued to the lack of security or dued to another thing that may happen.
This is a project in development. So, you will experience bugs, lack of feactures, and many other things...
USE IT AT YOUR OWN RISK.


tire os espaços entre a "/" e o "b" nos negritos, ficou todo deformado o post.
member
Activity: 98
Merit: 10
Olá Mundo,

Eu estou desenvolvendo um site de Trafic Exchange feito em PHP.
No inicio ia fazer host do site mas o meu pc deu peça
Então, tornei o site OpenSource para que qualquer um que queira começar um site deste tipo possa ter um grande impulso.
Fiz upload de todos os arquivos no GitHub.

Website oficial deste script: http://zenjb.tk/project/TXZone/


REQUISITOS
- Apache
- MySQL
- Msmtp
- PHP V5.5.13
- Phpmyadmin
- 2 Contas no BlockChain

Como configurar o site?
1> Configure o Apache, MySQL, msmtp e o PHP
2> Crie 2 contas carteira no Blockchain
3> Ative o API em ambos as carteiras do BlockChain
4> Crie uma base de dados no MySQL chamada txzone atraves do phpmyadmin
5> Importar o arquivo database.xml para a base da dados txzone
6> Configure o ficheiro db.php em /scripts
7> Autorize o site a  acessar o API de suas carteiras

Como resetar as tarefas concluidas pelos usuários (deve ser feito diariamente e a uma hora fixa para permitir que os usuário façam as suas tarefas no dia seguinte):
1> Em phpmyadmin vá a txzone -> tasks e apague os dados

Como activar os levantamentos de Bitcoin:
1> Transfira os Bitcoin da conta onde são depositados para a conta que vai enviar Bitcoin para o utilizador
2> Em phpmyadmin abra a base de dados txzone -> webcontrol e defina o valor de pagamento 0-1

Atenção:
Quando atualizar a versão do script é possivel que perca os dados na base de dados. Portanto, certifique-se de fazer o backup de tudo antes de atualizar!


Se faltar alguma coisa ou quiser que adicione alguma funcionalidade, por favor mande mensagem privada

Funcionalidade por acrescentar:
-> Painel Administrativo
-> Oportunidade de escolher onde vai guardar as Bitcoins
-> Anti SQL-Injection em todas as páginas
-> Encriptação do código fonte
-> Compatibilidade com MySQL e MySQLi
-> Compatibilidade com todas as versões do PHP
-> Pagina para recuperação da palavra passe
-> Escolha do método de levantamento dos Bitcoins ( Via FaucetBox ou Via Instantânea )
-> Envio automático de Email ao comprador dos anúncios quando os anúncios já foram todos vistos
-> Estatísticas de visualizações dos anúncios (Número de anúncios vistos por    dia ou por mês, Anúncios comprados)
-> "Ganhos no Site" - Comparação do número de anúncios comprados com o numero de anúncios vistos
-> Sistema de pagamentos de Bitcoin totalmente Automatizado
-> Outros idiomas (Português (Portugal), Francês, Espanhol)


Por cada 0,2542 BTC doados, vou lançar um update ao script
Montante já recebido: 0.00005500 BTC

 Se você usar este código-fonte para outros fins, por favor atribua-me os devidos créditos


Link do codigo fonte:
http://zenjb.tk/

Email privado:
[email protected]

Disclaimer:
I am not responsible if you or someone loses Bitcoins, or if you get hacked dued to the lack of security or dued to another thing that may happen.
This is a project in development. So, you will experience bugs, lack of feactures, and many other things...
USE IT AT YOUR OWN RISK.
Jump to: