Skip to content

Commit

Permalink
Resolução XSS [Issue #840]
Browse files Browse the repository at this point in the history
  • Loading branch information
GabrielPintoSouza committed Dec 23, 2024
1 parent 8b053e0 commit ef1f9f4
Show file tree
Hide file tree
Showing 2 changed files with 215 additions and 141 deletions.
20 changes: 12 additions & 8 deletions html/socio/sistema/controller/import_modais.php
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@
foreach($socios as $socio){
$idSocio = $socio->getId();
$nomeSocio = $socio->getNome();
$opcoesSocio .= "<option value=\"$idSocio\">$nomeSocio</option>";
$opcoesSocio .= "<option value=\"$idSocio\">".htmlspecialchars($nomeSocio)."</option>";
}

echo $opcoesSocio;
Expand Down Expand Up @@ -499,13 +499,17 @@
$query = mysqli_query($conexao, "SELECT *, s.id_socio as socioid, DATE_FORMAT(p.data_nascimento, '%d/%m') as aniversario FROM socio AS s LEFT JOIN pessoa AS p ON s.id_pessoa = p.id_pessoa WHERE p.data_nascimento LIKE '%-$mes_atual-%'");
while ($resultado = mysqli_fetch_array($query)) {

$id = $resultado['socioid'];
$cpf_cnpj = $resultado['cpf'];
$aniversario = $resultado['aniversario'];
$nome_s = $resultado['nome'];
$email = $resultado['email'];
$telefone = $resultado['telefone'];
$endereco = $resultado['logradouro'] . " " . $resultado['numero_endereco'] . ", " . $resultado['bairro'] . ", " . $resultado['cidade'] . " - " . $resultado['estado'];
$id = htmlspecialchars($resultado['socioid']);
$cpf_cnpj = htmlspecialchars($resultado['cpf']);
$nome_s = htmlspecialchars($resultado['nome']);
$email = htmlspecialchars($resultado['email']);
$telefone = htmlspecialchars($resultado['telefone']);
$tipo_socio = htmlspecialchars($resultado['tipo']);
if ($resultado['logradouro'] == "") {
$endereco = "Endereço não informado/incompleto.";
} else {
$endereco = htmlspecialchars($resultado['logradouro']) . " " . htmlspecialchars($resultado['numero_endereco']) . ", " . htmlspecialchars($resultado['bairro']) . ", " . htmlspecialchars($resultado['cidade']) . " - " . htmlspecialchars($resultado['estado']);
}
if (strlen($telefone) == 14) {
$tel_url = preg_replace("/[^0-9]/", "", $telefone);
$telefone = "<a target='_blank' href='http://wa.me/55$tel_url'>$telefone</a>";
Expand Down
336 changes: 203 additions & 133 deletions html/socio/sistema/processa_edicao_socio.php
Original file line number Diff line number Diff line change
@@ -1,152 +1,222 @@
<?php
require("../conexao.php");
if(!isset($_POST) or empty($_POST)){
$data = file_get_contents( "php://input" );
$data = json_decode( $data, true );
$_POST = $data;
}else if(is_string($_POST)){
$_POST = json_decode($_POST, true);
}
$cadastrado = false;
extract($_REQUEST);
if(!isset($data_nasc)){
$data_nasc = null;
}
require("../conexao.php");
if (!isset($_POST) or empty($_POST)) {
$data = file_get_contents("php://input");
$data = json_decode($data, true);
$_POST = $data;
} else if (is_string($_POST)) {
$_POST = json_decode($_POST, true);
}
$cadastrado = false;
extract($_REQUEST);
if (!isset($data_nasc)) {
$data_nasc = null;
}

if(!isset($contribuinte)){
$contribuinte = null;
}
if (!isset($contribuinte)) {
$contribuinte = null;
}

if(!isset($data_referencia) or ($data_referencia == null) or ($data_referencia == "") or empty($data_referencia) or ($data_referencia == "imp")){
$data_referencia = "null";
}else $data_referencia = "'$data_referencia'";
if (!isset($data_referencia) or ($data_referencia == null) or ($data_referencia == "") or empty($data_referencia) or ($data_referencia == "imp")) {
$data_referencia = null;
} else $data_referencia = $data_referencia;

if(!isset($data_nasc) or ($data_nasc == null) or ($data_nasc == "") or empty($data_nasc) or ($data_nasc == "imp")){
$data_nasc = "null";
}else $data_nasc = "'$data_nasc'";
if (!isset($data_nasc) or ($data_nasc == null) or ($data_nasc == "") or empty($data_nasc) or ($data_nasc == "imp")) {
$data_nasc = null;
} else $data_nasc = $data_nasc;


if(!isset($valor_periodo) or ($valor_periodo == null) or ($valor_periodo == "") or empty($valor_periodo) or ($valor_periodo == "imp")){
$valor_periodo = "null";
}else $valor_periodo = "'$valor_periodo'";
if (!isset($valor_periodo) or ($valor_periodo == null) or ($valor_periodo == "") or empty($valor_periodo) or ($valor_periodo == "imp")) {
$valor_periodo = null;
} else $valor_periodo = $valor_periodo;

// Lidando com aspas simples e duplas
$socio_nome = addslashes($socio_nome);
$cidade = addslashes($cidade);
$bairro = addslashes($bairro);
$numero = addslashes($numero);
$rua = addslashes($rua);
$complemento = addslashes($complemento);
if (!isset($tag) or ($tag == null) or ($tag == "none")) {
$tag = null;
}

if(!isset($tag) or ($tag == null) or ($tag == "none")){
$tag = "null";
$sqlBuscaIdPessoa = "SELECT id_pessoa FROM socio WHERE id_socio = ?";

$stmt = mysqli_prepare($conexao, $sqlBuscaIdPessoa);
$stmt->bind_param('s', $id_socio);

if ($stmt->execute()) {
$resultado = $stmt->get_result();
if ($resultado) {
$id_pessoa = $resultado->fetch_assoc()['id_pessoa'];
}
} else {
http_response_code(500);
echo json_encode(['erro' => 'Erro no servidor']);
exit();
}

$sqlUpdatePessoa = "UPDATE pessoa
SET cpf = ?,
nome = ?,
telefone = ?,
data_nascimento = ?,
cep = ?,
estado = ?,
cidade = ?,
bairro = ?,
logradouro = ?,
numero_endereco = ?,
complemento = ?
WHERE id_pessoa = ?";

$id_pessoa = mysqli_fetch_array(mysqli_query($conexao, "SELECT id_pessoa FROM socio WHERE id_socio = $id_socio"))['id_pessoa'];
if($resultado = mysqli_query($conexao, "UPDATE `pessoa` SET `cpf` = '$cpf_cnpj', `nome` = '$socio_nome', `telefone` = '$telefone', `data_nascimento` = $data_nasc, `cep` = '$cep', `estado` = '$estado', `cidade` = '$cidade', `bairro` = '$bairro', `logradouro` = '$rua', `numero_endereco` = '$numero', `complemento` = '$complemento' WHERE id_pessoa = $id_pessoa")){
switch($pessoa){
case "juridica":
if($contribuinte == "mensal"){
if($tipo_contribuicao == 2){
$id_sociotipo = 23;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 43;
}else{
$id_sociotipo = 3;
}
}else if($contribuinte == "casual"){
if($tipo_contribuicao == 2){
$id_sociotipo = 21;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 41;
}else{
$id_sociotipo = 1;
}
}else if($contribuinte == "bimestral"){
if($tipo_contribuicao == 2){
$id_sociotipo = 25;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 45;
}else{
$id_sociotipo = 7;
}
}else if($contribuinte == "trimestral"){
if($tipo_contribuicao == 2){
$id_sociotipo = 27;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 47;
}else{
$id_sociotipo = 9;
}
}else if($contribuinte == "semestral"){
if($tipo_contribuicao == 2){
$id_sociotipo = 29;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 49;
}else{
$id_sociotipo = 11;
}
}

if($contribuinte == null || $contribuinte == "si" || $contribuinte == ""){
$id_sociotipo = 5;
} break;

case "fisica":
if($contribuinte == "mensal"){
if($tipo_contribuicao == 2){
$id_sociotipo = 22;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 42;
}else{
$id_sociotipo = 2;
}
}else if($contribuinte == "casual"){
if($tipo_contribuicao == 2){
$id_sociotipo = 20;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 40;
}else{
$id_sociotipo = 0;
$stmt = mysqli_prepare($conexao, $sqlUpdatePessoa);

if ($stmt) {
// Bind dos parâmetros (tipos: 's' para string, 'i' para inteiro, 'd' para float/double)
$stmt->bind_param(
'sssssssssssi',
$cpf_cnpj,
$socio_nome,
$telefone,
$data_nasc,
$cep,
$estado,
$cidade,
$bairro,
$rua,
$numero,
$complemento,
$id_pessoa
);

// Executa o statement
if ($stmt->execute()) {
switch ($pessoa) {
case "juridica":
if ($contribuinte == "mensal") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 23;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 43;
} else {
$id_sociotipo = 3;
}
} else if ($contribuinte == "casual") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 21;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 41;
} else {
$id_sociotipo = 1;
}
} else if ($contribuinte == "bimestral") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 25;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 45;
} else {
$id_sociotipo = 7;
}
} else if ($contribuinte == "trimestral") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 27;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 47;
} else {
$id_sociotipo = 9;
}
} else if ($contribuinte == "semestral") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 29;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 49;
} else {
$id_sociotipo = 11;
}
}
}else if($contribuinte == "bimestral"){
if($tipo_contribuicao == 2){
$id_sociotipo = 24;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 44;
}else{
$id_sociotipo = 6;

if ($contribuinte == null || $contribuinte == "si" || $contribuinte == "") {
$id_sociotipo = 5;
}
}else if($contribuinte == "trimestral"){
if($tipo_contribuicao == 2){
$id_sociotipo = 26;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 46;
}else{
$id_sociotipo = 8;
break;

case "fisica":
if ($contribuinte == "mensal") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 22;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 42;
} else {
$id_sociotipo = 2;
}
} else if ($contribuinte == "casual") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 20;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 40;
} else {
$id_sociotipo = 0;
}
} else if ($contribuinte == "bimestral") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 24;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 44;
} else {
$id_sociotipo = 6;
}
} else if ($contribuinte == "trimestral") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 26;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 46;
} else {
$id_sociotipo = 8;
}
} else if ($contribuinte == "semestral") {
if ($tipo_contribuicao == 2) {
$id_sociotipo = 28;
} else if ($tipo_contribuicao == 3) {
$id_sociotipo = 48;
} else {
$id_sociotipo = 10;
}
}
}else if($contribuinte == "semestral"){
if($tipo_contribuicao == 2){
$id_sociotipo = 28;
}else if($tipo_contribuicao == 3){
$id_sociotipo = 48;
}else{
$id_sociotipo = 10;


if ($contribuinte == null || $contribuinte == "si" || $contribuinte == "") {
$id_sociotipo = 4;
}
}


if($contribuinte == null || $contribuinte == "si" || $contribuinte == ""){
$id_sociotipo = 4;
} break;
}
if($resultado = mysqli_query($conexao, "UPDATE `socio` SET `id_sociostatus`= '$status', `id_sociotipo` = $id_sociotipo, `email` = '$email', `data_referencia` = $data_referencia, `valor_periodo` = $valor_periodo, `id_sociotag` = $tag WHERE id_socio = $id_socio")){
$cadastrado = true;
break;
}

$sqlUpdateSocio = "UPDATE socio
SET id_sociostatus = ?,
id_sociotipo = ?,
email = ?,
data_referencia = ?,
valor_periodo = ?,
id_sociotag = ?
WHERE id_socio = ?";

$stmt = mysqli_prepare($conexao, $sqlUpdateSocio);

if ($stmt) {
// Bind dos parâmetros
$stmt->bind_param(
'sissdii',
$status, // String (id_sociostatus)
$id_sociotipo, // Inteiro (id_sociotipo)
$email, // String (email)
$data_referencia, // String (data_referencia)
$valor_periodo, // Double (valor_periodo)
$tag, // Inteiro (id_sociotag)
$id_socio // Inteiro (id_socio)
);

// Executa o statement
if ($stmt->execute()) {
$cadastrado = true;
}
}
}

echo json_encode($cadastrado);
?>
// Fecha o statement
$stmt->close();
}

echo json_encode($cadastrado);

0 comments on commit ef1f9f4

Please sign in to comment.