Você está na página 1de 39

SISTEMA DE ENSINO PRESENCIAL CONECTADO

SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO


DE SISTEMAS
ADAILSON APARECIDO ALVES DOS SANTOS
CHARLES CARDOSO SOBRINHO
HELENO MACIEL NOGUEIRA
LEONARDO SOARES SILVA

PRODUÇÃO TEXTUAL INTERDISCIPLINAR EM GRUPO


6º SEMESTRE - 2017/1

Gurupi
2017
ADAILSON APARECIDO ALVES DOS SANTOS
CHARLES CARDOSO SOBRINHO
HELENO MACIEL NOGUEIRA
LEONARDO SOARES SILVA

PRODUÇÃO TEXTUAL INTERDISCIPLINAR INDIVIDUAL


6º SEMESTRE - 2017/1

Trabalho apresentado ao Curso Superior de Tecnologia


em Análise e Desenvolvimento de Sistemas da UNOPAR
- Universidade Norte do Paraná, para as disciplinas:

Interação Homem-Computador;
Sistemas de Computação e Informação;
Segurança da Informação;
Ética, Política e Sociedade e
Seminários I.

Orientadores: Profs.

Merris Mozer
Marco. I. Hisatomi
Adriane A. Loper
Claudiane Ribeiro Balan e
Anderson Macedo.

Gurupi
2017
SUMÁRIO

1 INTRODUÇÃO ..................................................................................................... 4
2 OBJETIVO ........................................................................................................... 5
3 DESENVOLVIMENTO ......................................................................................... 6
3.1 Interação Humano-Computador .................................................................... 6
3.1.1 Linguagens de implementação & outras tecnologias utilizadas ............. 6
3.1.2 Visualização ........................................................................................... 6
3.1.3 Estrutura de Diretórios do Servidor ...................................................... 12
3.1.4 Código Fonte ....................................................................................... 13
3.1.4.1 .htaccess .......................................................................................... 13
3.1.4.2 .demo.appcache ............................................................................... 13
3.1.4.3 /app/view/incluir_cliente_f.html ......................................................... 13
3.1.4.4 /app/includes/estadocivil.html ........................................................... 18
3.1.4.5 /app/includes/estado_cidade.js ( parcial ) ........................................ 18
3.1.4.6 /app/includes/maskformat.js ............................................................. 20
3.1.4.7 /app/includes/valida_cpf.js................................................................ 20
3.1.4.8 /app/includes/valida_data.js ............................................................. 22
3.1.4.9 /app/includes/valida_email.js ............................................................ 24
3.2 Sistemas de Informações............................................................................ 26
3.2.1 Organização hierárquica dos dados .................................................... 26
3.2.2 Relacionamento quantitativo dos dados .............................................. 26
3.3 Segurança da informação e de redes ......................................................... 27
3.3.1 Criptografia .......................................................................................... 27
3.3.1.1 Criptografia clássica ......................................................................... 27
3.3.1.1.1 Scytale ....................................................................................... 27
3.3.1.1.2 Cifra de César ............................................................................ 28
3.3.1.1.3 Cifra de Vigenère ....................................................................... 28
3.3.1.1.4 A máquina Enigma..................................................................... 29
3.3.1.2 Criptografia Moderna........................................................................ 30
3.3.1.2.1 Chave simétrica ......................................................................... 30
3.3.1.2.2 Chave assimétrica ..................................................................... 30
3.3.1.2.3 Hash (Função de resumo) ......................................................... 31
3.3.1.2.4 Assinatura digital........................................................................ 32
3.3.1.2.5 Certificado digital ....................................................................... 32
3.3.1.2.6 Criptografia nas redes sem fio ................................................... 33
3.3.1.2.7 Opção escolhida para uso ......................................................... 34
3.4 Ética, política e sociedade .......................................................................... 34
3.4.1 Pontos fortes para a estratégia de vendas .......................................... 34
3.4.2 Critérios pessoais para um bom vendedor de software/sistemas ........ 34
3.4.3 Idoneidade e fatores adversos ............................................................. 35
4 CONCLUSÃO .................................................................................................... 36
4

1 INTRODUÇÃO

O presente trabalho tem por objetivo apresentar as atividades


desenvolvidas com a finalidade de atender os requisitos da produção textual em grupo do
período corrente.
5

2 OBJETIVO

O objetivo deste trabalho é adquirir conhecimento das tecnologias


relacionadas a informação e comunicação. Está organizado em 4 partes. Na parte 1, será
abordado a elaboração de uma tela de cadastro, seguindo as diretrizes de IHC. Na parte
2 será analisada a estrutura de dados e seus relacionamentos. Na parte 3 conheceremos
os modos de criptografia e na parte 4 trataremos sobre sociologia e filosofia aplicadas a
área de TI.
6

3 DESENVOLVIMENTO

3.1 INTERAÇÃO HUMANO-COMPUTADOR

3.1.1 Linguagens de implementação & outras tecnologias utilizadas

Linguagem de Marcação HTML 5


Linguagem Client-Side JavaScript
Framework Bootstrap
Servidor Web XAMPP
Browser Web Firefox 53.0.2 (32-bits)
Google Chrome 58.0.3029.110 (64-bits)
Editor de Código Fonte Notepad++ v6.8

3.1.2 Visualização

Figura 1 – Tela do protótipo

Fonte: O Autor
7

Figura 2 – Tela do protótipo

Fonte: O Autor

Figura 2 – Tentativa de submissão sem preenchimento de dados

Fonte: O Autor
8

Figura 3 – Preenchimento do campo Nome

Fonte: O Autor

Figura 4 – Preenchimento de CPF incompleto.

Fonte: O Autor
9

Figura 5 – Preenchimento de CPF inválido.

Fonte: O Autor

Figura 6 – Preenchimento de CPF inválido.

Fonte: O Autor
10

Figura 7 – Preenchimento de CPF válido.

Fonte: O Autor

Figura 8 – Exibição da lista de Estados ao clicar no referido campo.

Fonte: O Autor
11

Figura 9 – Carrega as cidades do Estado no campo de cidades.

Fonte: O Autor

Figura 10 – Preenchimento concluido.

Fonte: O Autor
12

3.1.3 Estrutura de Diretórios do Servidor

Figura 11 – Estrutura de diretórios do servidor.

Fonte: O Autor
13

3.1.4 Código Fonte

3.1.4.1 .htaccess

# Habilitar o PHP 5.5


AddHandler application/x-httpd-php55 .php
<IfModule mod_suphp.c>
suPHP_ConfigPath /opt/php55/lib
</IfModule>

# Habilitar includes com .html


AddType text/html .html
AddHandler server-parsed .html
Options Indexes FollowSymLinks Includes

# Habilitar includes com .php


# php_value allow_url_include on

#-----------------------

AddType text/cache-manifest .appcache

<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>

<FilesMatch "\.(html|htm|js|css|php|png)>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</FilesMatch>

3.1.4.2 .demo.appcache

CACHE MANIFEST
# 2015-09-25 time 20:33 UTC v 1.01
NETWORK:
*

3.1.4.3 /app/view/incluir_cliente_f.html

<!DOCTYPE html>
<!--<html lang="en">-->
<html lang="pt-br">
14

<!--
<script src="http://www.w3schools.com/lib/w3data.js"></script>
-->
<script src="../../libs/w3data.js"></script>

<head>
<title>Cadastro de Clientes</title>
<meta charset="utf-8">
<!--
<meta charset="Content-Type: text/html; charset=UTF-8">
-->

<meta name="viewport" content="width=device-width, initial-scale=1">


<link rel="stylesheet" href="../../libs/bootstrap.min.css">
<link href="../../libs/font-awesome.min.css" rel="stylesheet">

<!--<link rel="stylesheet" href="/libs/bootstrap-select/css/bootstrap-select.css">-->

<style type="text/css">
html {
margin:0;
height: 100%;
overflow-y:hidden;
overflow-x:hidden;
}

body {
margin:0;
height: 100%;
}

.um { background: black; color: white; padding:0 20px; height: 100%; }


h1 { margin:0;}

</style>

<script charset="utf-8" >


//**************************
var status_campos = new Array(0,0,0,0,0,0,0,0,0);

/*
0 - nome
1 - sexo
2 - estadocivil
3 - cpf
4 - datanascimento
5 - naturalidade_estado
6 - naturalidade_cidade
7 - tel_fixo
8 - email
*/

function read_status_campos(){

var sc_all;
//loop
for(i=0;i<=status_campos.length-1;i++){

sc_all = sc_all + "|" + status_campos[i];


15

}//End loop

document.getElementById('monitor').value=sc_all;
}

//modelo: onblur="valida_campo('Prazo_mes')"
function valida_campo(nomecampo,posicao_array) {
var controle = false;

if (document.getElementById(nomecampo).value.length>1 &&
document.getElementById(nomecampo).value!="") {//if 01
//if (document.getElementById(nomecampo).value.length<1) {//if 01
controle = true;
}else{//if 01
controle = false;
}//End - if 01

// Seta Campos
if (controle==true) {
document.getElementById(nomecampo).style.backgroundColor='#98FB98';
status_campos[posicao_array]=1;
}else{
document.getElementById(nomecampo).style.backgroundColor='red';
status_campos[posicao_array]=0;
}
}//End - valida_campo(nomecampo)

function valida_campos_onsubmit() {

var controle=true;
var cp_validos=0;
var cp_invalidos=0;

//loop
for(i=0;i<=status_campos.length-1;i++){
cp_validos=cp_validos + status_campos[i];
}//End loop
//document.getElementById('monitor').value=cp_validos;
if (cp_validos==3) {
return true;
}else{
alert('Verifique o preenchimento dos campos! Há campos vazios e/ou inválidos.');
return false;
}
}//End - function valida_campos_onsubmit()

</script>

<script src="../includes/maskformat.js" charset="utf-8" ></script>


<script src="../includes/estado_cidade.js" charset="utf-8" ></script>
<script src="../includes/valida_cpf.js" charset="utf-8" ></script>
<script src="../includes/valida_data.js" charset="utf-8" ></script>
<script src="../includes/valida_email.js" charset="utf-8" ></script>

</head>
<body>
16

<div class="container">
<br>&nbsp;<br>
<h1>Formulário de Cadastro</h1>
<br>&nbsp;<br>

<form class="form-inline" action="/action_page.php" onSubmit="return valida_campos_onsubmit();">


<div class="form-group">
<label for="nome">Nome:</label>
<input type="text" onblur="valida_campo(this.name,0);" class="form-control input-lg" id="nome"
name="nome" size="40"/><!-- placeholder="Digite o nome" -->
<br>
</div>

<div class="form-group">
<label for="sexo">Sexo:</label>
<select class="form-control input-lg" id="sexo" name="sexo" onchange="valida_campo(this.name,1);" >
<option value="" selected></option>
<option value="Masculino">Masculino</option>
<option value="Feminino">Feminino</option>
</select>
<br>
</div>
<br>&nbsp;<br>

<div class="form-group">
<label for="estadocivil">Estado Civil:</label>
<select class="form-control input-lg" id="estadocivil" name="estadocivil"
onchange="valida_campo(this.name,2);">
<!--#include virtual="../includes/estadocivil.html"-->
</select>
<br>
</div>

<div class="form-group">
<label for="cpf">CPF:</label>
<input type="text" onkeypress="return MM_formt(event,this,'###.###.###-##');"
onblur="validacpf(this.name);" onchange="validacpf(this.name);" class="form-control input-lg" id="cpf"
placeholder="" name="cpf" size="16" maxlength="14"/>
<br>
</div>

<div class="form-group">
<label for="datanascimento">Data de Nascimento:</label>
<input type="text" onkeypress="return MM_formt(event,this,'##/##/####');"
onblur="validadata(this.value, this.name)" class="form-control input-lg" id="datanascimento"
name="datanascimento" size="10" maxlength="10"/>
<br>
</div>
<br>&nbsp;<br>

<div class="form-group">
<label for="naturalidade_estado">Naturalidade - Estado:</label>
<select class="form-control input-lg" id="naturalidade_estado" name="naturalidade_estado"
onChange="javascript:CidadeEstado(this.name,'naturalidade_cidade');" onblur="valida_campo(this.name,5);">
<!--#include virtual="../includes/estados.html"-->
</select>
17

<br>
</div>

<div class="form-group">
<label for="naturalidade_cidade">Naturalidade - Estado:</label>
<select class="form-control input-lg" id="naturalidade_cidade" name="naturalidade_cidade"
onchange="valida_campo(this.name,6);" onblur="valida_campo(this.name,6);">
</select>
<br>
</div>
<br>&nbsp;<br>

<div class="form-group">
<label for="tel_fixo">Telefone:</label>
<input type="text" onkeypress="return MM_formt(event,this,'##-#-####-####');"
onchange="valida_campo(this.name,7);" class="form-control input-lg" id="tel_fixo" name="tel_fixo" size="16"
maxlength="14"/>
<br>
</div>

<div class="form-group">
<label for="email">E-mail:</label>
<input type="text" onblur="valida_email(this.name);" class="form-control input-lg" id="email"
name="email" size="35"/>
<br>
</div>
<br>&nbsp;<br>
<!--
<div class="form-group">
<label for="monitor">monitor:</label>
<input type="text" class="form-control input-lg" id="monitor" name="monitor" size="35"/>
<br>
</div>-->

<br>&nbsp;<br>

<div class="wrapper">
<span class="group-btn">
<button type="submit" class="btn btn-primary btn-lg btn-md">Incluir<i class="fa fa-sign-
in"></i></button>
<button type="submit" class="btn btn-warning btn-lg btn-md">Alterar<i class="fa fa-sign-
in"></i></button>
<button type="submit" class="btn btn-danger btn-lg btn-primary btn-md">Excluir<i class="fa fa-sign-
in"></i></button>
</span>
</div>
</form>
</div>

<!--
<button onclick="read_status_campos()">read_status_campos</button>
<button onclick="valida_campo('nome',0)">testa valida campo</button>
<button onclick="muda_cor_select('sexo')">muda cor select</button>
document.getElementById(ArPZ[i]).style.backgroundColor=ecolor;
-->
18

</body>
</html>

3.1.4.4 /app/includes/estadocivil.html

<option selected></option>
<option value="Solteiro">Solteiro (a)</option>
<option value="Casado">Casado(a)</option>
<option value="Divorciado">Divorciado (a)</option>
<option value="Viúvo">Viúvo(a)</option>

3.1.4.5 /app/includes/estado_cidade.js ( parcial )

<!--
//carrega lista de cidades por estado - versão de 20/07/2008
//formato para uso
//onChange="javascript:CidadeEstado(this.name,'NaturalidadeCidade');"

function CidadeEstado(this_name,destination) {

switch
(document.getElementById(this_name).options[document.getElementById(this_name).selectedIndex].value) {

case 'Acre':
document.getElementById(destination).length=0;
document.getElementById(destination).options[0] = new Option('Acrelândia','Acrelândia');
document.getElementById(destination).options[1] = new Option('Assis Brasil','Assis Brasil');
document.getElementById(destination).options[2] = new Option('Brasiléia','Brasiléia');
document.getElementById(destination).options[3] = new Option('Bujari','Bujari');
document.getElementById(destination).options[4] = new Option('Capixaba','Capixaba');
document.getElementById(destination).options[5] = new Option('Cruzeiro do Sul','Cruzeiro do Sul');
document.getElementById(destination).options[6] = new Option('Epitaciolândia','Epitaciolândia');
document.getElementById(destination).options[7] = new Option('Feijó','Feijó');
document.getElementById(destination).options[8] = new Option('Jordão','Jordão');
document.getElementById(destination).options[9] = new Option('Mâncio Lima','Mâncio Lima');
document.getElementById(destination).options[10] = new Option('Manoel Urbano','Manoel Urbano');
document.getElementById(destination).options[11] = new Option('Marechal Thaumaturgo','Marechal
Thaumaturgo');
document.getElementById(destination).options[12] = new Option('Plácido de Castro','Plácido de Castro');
document.getElementById(destination).options[13] = new Option('Porto Acre','Porto Acre');
document.getElementById(destination).options[14] = new Option('Porto Walter','Porto Walter');
document.getElementById(destination).options[15] = new Option('Rio Branco','Rio Branco');
document.getElementById(destination).options[16] = new Option('Rodrigues Alves','Rodrigues Alves');
document.getElementById(destination).options[17] = new Option('Santa Rosa do Purus','Santa Rosa do
Purus');
19

document.getElementById(destination).options[18] = new Option('Sena Madureira','Sena Madureira');


document.getElementById(destination).options[19] = new Option('Senador Guiomard','Senador Guiomard');
document.getElementById(destination).options[20] = new Option('Tarauacá','Tarauacá');
document.getElementById(destination).options[21] = new Option('Xapuri','Xapuri');
break;

case 'Alagoas':
document.getElementById(destination).length=0;
document.getElementById(destination).options[0] = new Option('Água Branca','Água Branca');
document.getElementById(destination).options[1] = new Option('Anadia','Anadia');
document.getElementById(destination).options[2] = new Option('Arapiraca','Arapiraca');
document.getElementById(destination).options[3] = new Option('Atalaia','Atalaia');
document.getElementById(destination).options[4] = new Option('Barra de Santo Antônio','Barra de Santo
Antônio');
document.getElementById(destination).options[5] = new Option('Barra de São Miguel','Barra de São Miguel');
.
.
.
.
.
.
.
.
.
.
.
.
document.getElementById(destination).options[114] = new Option('Sampaio','Sampaio');
document.getElementById(destination).options[115] = new Option('Sandolândia','Sandolândia');
document.getElementById(destination).options[116] = new Option('Santa Fé do Araguaia','Santa Fé do
Araguaia');
document.getElementById(destination).options[117] = new Option('Santa Maria do Tocantins','Santa Maria do
Tocantins');
document.getElementById(destination).options[118] = new Option('Santa Rita do Tocantins','Santa Rita do
Tocantins');
document.getElementById(destination).options[119] = new Option('Santa Rosa do Tocantins','Santa Rosa do
Tocantins');
document.getElementById(destination).options[120] = new Option('Santa Tereza do Tocantins','Santa Tereza
do Tocantins');
document.getElementById(destination).options[121] = new Option('Santa Terezinha do Tocantins','Santa
Terezinha do Tocantins');
document.getElementById(destination).options[122] = new Option('São Bento do Tocantins','São Bento do
Tocantins');
document.getElementById(destination).options[123] = new Option('São Félix do Tocantins','São Félix do
Tocantins');
document.getElementById(destination).options[124] = new Option('São Miguel do Tocantins','São Miguel do
Tocantins');
document.getElementById(destination).options[125] = new Option('São Salvador do Tocantins','São Salvador
do Tocantins');
document.getElementById(destination).options[126] = new Option('São Sebastião do Tocantins','São
Sebastião do Tocantins');
document.getElementById(destination).options[127] = new Option('São Valério da Natividade','São Valério da
Natividade');
document.getElementById(destination).options[128] = new Option('Silvanópolis','Silvanópolis');
document.getElementById(destination).options[129] = new Option('Sítio Novo do Tocantins','Sítio Novo do
Tocantins');
document.getElementById(destination).options[130] = new Option('Sucupira','Sucupira');
document.getElementById(destination).options[131] = new Option('Taguatinga','Taguatinga');
20

document.getElementById(destination).options[132] = new Option('Taipas do Tocantins','Taipas do


Tocantins');
document.getElementById(destination).options[133] = new Option('Talismã','Talismã');
document.getElementById(destination).options[134] = new Option('Tocantínia','Tocantínia');
document.getElementById(destination).options[135] = new Option('Tocantinópolis','Tocantinópolis');
document.getElementById(destination).options[136] = new Option('Tupirama','Tupirama');
document.getElementById(destination).options[137] = new Option('Tupiratins','Tupiratins');
document.getElementById(destination).options[138] = new Option('Wanderlândia','Wanderlândia');
document.getElementById(destination).options[139] = new Option('Xambioá','Xambioá');
break;

case '':
form.document.getElementById(destination).length=0;
//document.getElementById(destination).options[1] = new Option('Abreulândia','Abreulândia');
//document.getElementById(destination).options[2] = new Option('Aguiarnópolis','Aguiarnópolis');
break;
}
}
-->

3.1.4.6 /app/includes/maskformat.js

// modelo de uso
//onkeypress="return MM_formt(event,this,'##-####-####');"

function MM_formt(e,src,mask) {
if(window.event) { _TXT = e.keyCode; }
else if(e.which) { _TXT = e.which; }
if(_TXT > 47 && _TXT < 58) {
var i = src.value.length; var saida = mask.substring(0,1); var texto = mask.substring(i)
if (texto.substring(0,1) != saida) { src.value += texto.substring(0,1); }
return true; } else { if (_TXT != 8) { return false; }
else { return true; }
}
}

3.1.4.7 /app/includes/valida_cpf.js

<!--
21

function validacpf(nomecampo) {

//Captura value do campo cpf


var strValue = document.getElementById(nomecampo).value;
var controle = false;
var caracteres_iguais = 0;

//Remove pontos e traços


strValue = strValue.replace(".", "");
strValue = strValue.replace(".", "");
strValue = strValue.replace("-", "");
strValue = strValue.replace("/", "");
strValue = strValue.replace("/", "");
//----------------------------------------

//Checar comprimento da string

if (strValue.length==11) {//if 01
//campo_atual_data='N';
controle=true;
//document.getElementById(nomecampo).style.backgroundColor='#98FB98';
valida_campo(nomecampo,3);
}else{//if 01
controle=false;
//document.getElementById(nomecampo).style.backgroundColor='red';
valida_campo(nomecampo,3);
}//End - if 01
//----------------------------------------

//Checa se caracteres são repetidos


if (controle==true ) {//if 02

//loop
for(i=0;i<strValue.length-1;i++){//loop 01
if (strValue.substring(i, i+1)==strValue.substring(i+1, i+2) ) {//if 03
caracteres_iguais++;
//controle=false;
}else{//if 03
//var caracteres_iguais = false;
//controle==true;
//break;
}//End - if 03
}//End - loop 01
}//End if 02
//----------------------------------------

// Valida numero do cpf


if (controle==true && caracteres_iguais < 9) {//if 04

var cpf_teste;
cpf_teste = TestaCPF(strValue);

if (cpf_teste==true) {//if 05
controle=true;
}else{//if 05
controle=false;
22

}//End - if 05

}else{//if 04
controle=false;
}//End - if 04
//----------------------------------------

if (controle==true) {
//if (controle==true) {
document.getElementById(nomecampo).style.backgroundColor='#98FB98';
//alert("segue");
status_campos[3]=1;
}else{
document.getElementById(nomecampo).style.backgroundColor='red';
status_campos[3]=0;
//alert("para");
}

}//End - function validacpf

//Verifica se CPF é válido


function TestaCPF(strCPF) {//disponivel em
http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/funcoes.js
var Soma;
var Resto;
Soma = 0;
//strCPF = RetiraCaracteresInvalidos(strCPF,11);
if (strCPF == "00000000000")
return false;
for (i=1; i<=9; i++)
Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i);
Resto = (Soma * 10) % 11;
if ((Resto == 10) || (Resto == 11))
Resto = 0;
if (Resto != parseInt(strCPF.substring(9, 10)) )
return false;
Soma = 0;
for (i = 1; i <= 10; i++)
Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i);
Resto = (Soma * 10) % 11;
if ((Resto == 10) || (Resto == 11))
Resto = 0;
if (Resto != parseInt(strCPF.substring(10, 11) ) )
return false;
return true;
}//End - function TestaCPF

-->

3.1.4.8 /app/includes/valida_data.js

<!--
23

function validadata(valuecampo,nomecampo){

var controle = false;

//Checar comprimento da string

if (valuecampo.length==10) {//if 01
//campo_atual_data='N';
controle=true;
//document.getElementById(nomecampo).style.backgroundColor='#98FB98';
}else{//if 01
controle=false;
//document.getElementById(nomecampo).style.backgroundColor='red';
}//End - if 01
//----------------------------------------

var cdata = valuecampo.split('/');


var dia=cdata[0];
var mes=cdata[1];
var ano=cdata[2];

//****************************************
//Area para validação de datas

if(mes>0 && mes<13 && dia>0 && dia<32){//if a01

//--- identificar o mes e o numero de dias ---


if (mes==4 || mes==6 || mes==9 || mes==11) {
if (dia==31) {
//alert("Verifique a Data. " + mes_t + " possui somente 30 dias");
controle=false;
}else{}
}else{}
//-----------------------------------------------------------
//if fevereiro
if (mes==2) {

//---- verificação do ano bisexto ---


ano_referencia=2000;
ano_inserido=ano;

if (ano_inserido<ano_referencia) {diferenca=ano_referencia-ano_inserido}else{};
if (ano_inserido>ano_referencia) {diferenca=ano_inserido-ano_referencia}else{};
if (ano_inserido==ano_referencia) {diferenca=0}else{};
resto=diferenca/4;resto=resto + "A";

for(i=0;i<=resto.length-1;i++){
if (resto.charAt(i)=='.') {anobisexto=1;break}else{anobisexto=0}
}
if (anobisexto==0) {
//este ano e bisexto, fev com 29 dias
fevdias=29;
}else{
//este ano não e bisexto, fev com 28 dias
fevdias=28;
}
24

if (dia<=fevdias) {
//nothing do
}else{

if (ano==1700) {
if (mes_t=='Fevereiro') {
//alert("Verifique a Data. " + mes_t + " possui, no maximo, " + fevdias + " dias.");
controle=false;
}else{
//alert("Verifique a Data. " + mes_t + " possui somente " + fevdias + " dias.");
controle=false;
}

}else{
//alert("Verifique a Data. " + mes_t + " possui somente " + fevdias + " dias em " + ano);
controle=false;
}
}

//if fevereiro
}else{}
//----------------------------------------------------------

//if a01
}else{
controle=false;
}//End - if a01

valida_campo(nomecampo,4);

}//End - function validadata

-->

3.1.4.9 /app/includes/valida_email.js

<!--

function valida_email(nomecampo) {
var controle;
//Checar comprimento da string

var strValue = document.getElementById(nomecampo).value;

if (strValue.length>0) {//if 01
//campo_atual_data='N';
controle=true;
//document.getElementById(nomecampo).style.backgroundColor='#98FB98';
}else{//if 01
controle=false;
//document.getElementById(nomecampo).style.backgroundColor='red';
}//End - if 01
25

//----------------------------------------

controle=validacaoEmail(strValue);

if (controle==true) {
//if (controle==true) {
document.getElementById(nomecampo).style.backgroundColor='#98FB98';
status_campos[8]=1;
}else{
document.getElementById(nomecampo).style.backgroundColor='red';
status_campos[8]=0;
}

valida_campo(nomecampo,8);

}//End - function valida_email(nomecampo) {

//Original: http://www.devmedia.com.br/validando-e-mail-em-inputs-html-com-javascript/26427
function validacaoEmail(field) {
//usuario = field.value.substring(0, field.value.indexOf("@"));
//dominio = field.value.substring(field.value.indexOf("@")+ 1, field.value.length);

usuario = field.substring(0, field.indexOf("@"));


dominio = field.substring(field.indexOf("@")+ 1, field.length);

if ((usuario.length >=1) &&


(dominio.length >=3) &&
(usuario.search("@")==-1) &&
(dominio.search("@")==-1) &&
(usuario.search(" ")==-1) &&
(dominio.search(" ")==-1) &&
(dominio.search(".")!=-1) &&
(dominio.indexOf(".") >=1)&&
(dominio.lastIndexOf(".") < dominio.length - 1)) {
//document.getElementById("msgemail").innerHTML="E-mail válido";
//alert("email valido");
return true;
}
else{
//document.getElementById("msgemail").innerHTML="<font color='red'>Email inválido </font>";
//alert("E-mail invalido");
return false;

}
}//End - function validacaoEmail

-->
26

3.2 SISTEMAS DE INFORMAÇÕES

3.2.1 Organização hierárquica dos dados

Figura 12 – Organização hierárquica dos dados.

Fonte: O Autor

3.2.2 Relacionamento quantitativo dos dados

Figura 13 – Relacionamento quantitativo dos dados.

Fonte: O Autor
27

3.3 SEGURANÇA DA INFORMAÇÃO E DE REDES

3.3.1 Criptografia

Criptografia, junção de duas palavras gregas κρυπτός (kriptós – secreto,


escondido) e γράφειν (gráfein – escrita), é, resumindo, o uso de técnicas para transformar
texto ou dados legíveis em informação ilegível, que não possa ser compreendida.
Povos antigos como os espartanos e romanos fizeram uso de cifras
criptográficas em suas trocas de mensagens. Para facilitar, dividimos as cifras
criptográficas em dois períodos: criptografia clássica e criptografia moderna.

3.3.1.1 Criptografia clássica

Período desde os povos antigos, passando pela Idade Média e chegando


até a Segunda Guerra Mundial, com o auge das máquinas eletro-mecânicas.

3.3.1.1.1 Scytale

A cifragem com o scytale (bastão, em grego) ou cítala espartana consistia


em se enrolar uma fita de tecido em um bastão de madeira de dada largura. A frase a ser
cifrada era escrita na fita no comprimento do bastão, denserolada e enviada disfarçada
(como um cinto por exemplo) e ao chegar ao destino deveria ser enrolada num bastão de
mesma largura para que a mensagem fosse decifrada.
Também era conhecida como bastão de Licurgo, embora alguns
estudiosos citem que este tipo de cifra não passa de um mito.

Figura 14 – Scytale.

Fonte: Cryptoid.com.br
28

3.3.1.1.2 Cifra de César

Utilizada por Júlio César para se comunicar com suas tropas durante as
guerras que travava. Consiste na substituição de uma letra do alfabeto por seu
correspondente três casas adiante.

Figura 15 – Cifra de César

Fonte: Cryptoid.com.br

3.3.1.1.3 Cifra de Vigenère

A cifra de Vigenère (atribuída equivocadamente a Blaise de Vigenère) foi


descrita primeiramente pelo italiano Giovan Battista Bellaso, em 1553, em sua obra La
cifra del. Sig. Giovan Batista Bellaso e por muito tempo foi considerada como le chiffre
indéchiffrable (a cifra indecifrável) quando, em meados do século XIX, Charles Babbage
e Friedrich Kasiki encontraram um método de resolvê-la.
Seu processo de cifragem é assim: o usuário cifrará a mensagem com
uma chave alfabética; caso a quantidade de caracteres da chave for menor que o tamanho
de caracteres da mensagem, a chave será repetida até ambas terem a mesma quantidade
de caracteres. Fazendo uma relação entre as duas (a mensagem e a chave), cada letra
da mensagem será cifrada com um alfabeto definido pelo caracter da chave ao qual estará
relacionada.

Figura 16 – Cifra de Vigenère.


29

Fonte: Cryptoid.com.br

3.3.1.1.4 A máquina Enigma

Com o surgimento da mecanização, máquinas foram desenvolvidas para


acelerar o processo de cifragem/decifragem, bem como dificultar a criptoanálise.
Dentre estes equipamentos o mais conhecido é a máquina Enigma,
utilizada pelos alemães durante a Segunda Guerra Mundial. A Enigma lembra um pouco
uma máquina de escrever, onde ao invés de colocar o resultado no papel, o mesmo era
mostrado em um painel luminoso com os caracteres do alfabeto. A chave era configurada
por meio de rotores eletromecânicos (3 ou mais) que podiam ser alterados conforme a
necessidade para formar a chave.
Foi considerada como impossível de se decifrar uma mensagem cifrada
com a Enigma. Sua quebra só foi possível devido a esforços de poloneses e ingleses,
sendo Alan Turing o mais lembrado em ter trabalhado na quebra da cifragem da Enigma.

Figura 17 – Máquina Enigma.

Fonte: Cryptoid.com.br
30

3.3.1.2 Criptografia Moderna

Atualmente, as técnicas de criptografia mais conhecidas envolvem o


conceito das chaves criptográficas, que são um conjunto de bits, baseados em um
algarismo capaz de interpretar a informação, ou seja, capaz de codificar e decodificar. Se
a chave do receptor não for compatível com a do emissor, a informação então não será
extraída.

3.3.1.2.1 Chave simétrica

É o tipo de chave mais simples e a mesma chave é utilizada tanto pelo


emissor quanto por quem recebe a informação. Ou seja, a mesma chave é utilizada para
codificação e para a decodificação dos dados.
Vários algoritmos de criptografia foram desenvolvidos a partir de chaves
simétricas. Dentre os mais comuns estão o DES, o IDEA e o RC.

Figura 18 – Chave simétrica.

Fonte: www.gta.ufrj.br

3.3.1.2.2 Chave assimétrica

Também conhecida como "chave pública", a chave assimétrica trabalha


com duas chaves: uma privada e outra pública. Nesse método, uma pessoa deve criar
uma chave de codificação e enviá-la a quem for lhe mandar informações. Essa é a chave
pública. Uma outra chave deve ser criada para a decodificação. Esta, a chave privada, é
secreta.

Figura 19 – Chave simétrica.


31

Fonte: www.gta.ufrj.br

Conheça alguns algoritmos que usam chaves assimétricas:

• RSA (Rivest, Shamir and Adleman): criado em 1977 nos laboratórios


do Massachusetts Institute of Technology (MIT), é um dos algoritmos de chave assimétrica
mais usados. Nele, números primos são utilizados da seguinte forma: dois números primos
são multiplicados para se obter um terceiro valor. A chave privada são os números
multiplicados e a chave pública é o valor obtido.
• ElGamal: criado por Taher ElGamal, esse algoritmo usa um problema
matemático conhecido por "logaritmo discreto" para se tornar seguro. É freqüente em
assinaturas digitais.

3.3.1.2.3 Hash (Função de resumo)

Método criptográfico que, quando aplicado sobre uma informação,


independente do tamanho, gera um resultado único e de tamanho fixo, chamado hash1.
Pode ser utilizado para verificar a integridade de arquivos e gerar
assinaturas digitais. O hash é gerado de tal forma que não é possível realizar o
processamento inverso para se obter a informação original e que qualquer alteração na
informação original produzirá um hash distinto. Apesar de ser teoricamente possível que
informações diferentes gerem hashes iguais, a probabilidade disso ocorrer é remota.

Figura 20 – Função Hash


32

Fonte: www.gta.ufrj.br

3.3.1.2.4 Assinatura digital

A assinatura digital permite comprovar a autenticidade e a integridade de


uma informação. A assinatura digital baseia-se no fato de que apenas o dono conhece a
chave privada e que, se ela foi usada para codificar uma informação, então apenas seu
dono poderia ter feito isto. A verificação da assinatura é feita com o uso da chave pública,
pois se o texto foi codificado com a chave privada, somente a chave pública
correspondente pode decodificá-lo.
Para contornar a baixa eficiência característica da criptografia de chaves
assimétricas, a codificação é feita sobre o hash e não sobre o conteúdo em si, pois é mais
rápido codificar o hash (que possui tamanho fixo e reduzido) do que a informação toda.

3.3.1.2.5 Certificado digital

O certificado digital é um registro eletrônico composto por um conjunto de


dados que distingue uma entidade e associa a ela uma chave pública. Ele pode ser emitido
para pessoas, empresas, equipamentos ou serviços na rede (por exemplo, um site Web)
e pode ser homologado para diferentes usos, como confidencialidade e assinatura digital.
Uma Autoridade Certificadora (AC) é também responsável por publicar
informações sobre certificados que não são mais confiáveis, a "Lista de Certificados
Revogados" (LCR) para que os usuários possam tomar conhecimento. A LCR é um
33

arquivo eletrônico publicado periodicamente pela AC, contendo o número de série dos
certificados que não são mais válidos e a data de revogação.

3.3.1.2.6 Criptografia nas redes sem fio

As redes wireless exigiram o desenvolvimento de técnicas de criptografia


para tornar esse tipo de comunicação viável,os tipos de criptografia mais usados nas redes
wireless são:

• WEP: esta técnica usa uma chave secreta compartilhada e o


algoritmo de criptografia RC4. O roteador wireless ou ponto de acesso, bem como todas
as estações que se conectam a ele devem usar a mesma chave compartilhada. Para cada
pacote de dados enviado em qualquer direção, o transmissor combina o conteúdo do
pacote com uma soma de verificação desse pacote. O padrão WEP pede então que o
transmissor crie um IV (Initialization Vector, vetor de inicialização) específico para o
pacote, que é combinado com a chave e usado para criptografar o pacote. O receptor gera
seu próprio pacote correspondente e o usa para decodificar o pacote. Em teoria, essa
abordagem é melhor do que a tática óbvia de usar apenas a chave secreta compartilhada,
pois inclui um bit de dado específico para o pacote que dificulta sua violação. Entretanto,
se uma chave compartilhada estiver comprometida, um invasor poderá bisbilhotar o
tráfego de informações ou entrar na rede.

• WPA e WPA2: estes certificados de segurança são baseadas no


padrão da Wi-Fi Alliance para redes locais sem fio e utilizados por muitas empresas e até
em redes domésticas. Eles permitem autenticação mútua para verificação de usuários
individuais e criptografia avançada. Tanto para o uso corporativo quanto para o pessoal,
garante um excelente padrão de segurança.

Figura 21 – Comparativo.
34

Fonte: www.oficinadanet.com.br

3.3.1.2.7 Opção escolhida para uso

Após a realização do estudo, entendemos que o melhor método q se


aplica a um cadastro de clientes via internet seja a criptografia de chave pública, em razão
da facilidade do usuário obter a chave pública sem dificuldades.

3.4 ÉTICA, POLÍTICA E SOCIEDADE

3.4.1 Pontos fortes para a estratégia de vendas

Figura 22 – Pontos de destaque para vendas


Pontos de Destaque da Ferramenta

Usuários tem liberdade de preencher os campos


em ordem a seu critério;

Os campos são validados individualmente em


tempo real, eliminando a desagradável situação
de receber diversos pedidos de correção ao
mesmo tempo;

Auxilia ao usuário demonstrando os campos que


precisam de correção através da diferenciação de
cores;

O cadastro só é concluído após a validação final


de todos os campos, proporcionando mais uma
garantia de integridade das informações
inseridas.

Fonte: O Autor

3.4.2 Critérios pessoais para um bom vendedor de software/sistemas

Figura 23 – Critérios pessoais para um bom vendedor de software/sistemas.


35

Fonte: O Autor

3.4.3 Idoneidade e fatores adversos

A idoneidade é definida como honestidade, competência. Credibilidade


seria uma boa definição. O mais grave fator contrário ao profissional será a concorrência,
que poderá agir de forma desleal. Entretanto, um profissional que seja idôneo não irá
nivelar-se por patamar mais baixo. Usara seu potencial para superar a concorrência de
forma ética.
36

4 CONCLUSÃO

Neste trabalho, abordamos a pesquisa e concepção de um sistema de


pequeno porte, tendo este diversos detalhes, sendo a IHC um dos mais interessantes e
desafiadores requisitos. Durante o processo tivemos a oportunidade de aperfeiçoar
nossas competências em todos os campos envolvidos, em especial destacamos os
recursos de IHC e Segurança da Informação. Fica cada vez mais clara a necessidade e
vantagem de investir tempo no planejamento do projeto. Levando assim a construção de
um maior conhecimento sobre o tema.
37

REFERÊNCIAS

NAKAMURA, Emílio Tissato. Segurança da informação e de redes. 224 p. Londrina:


Editora e Distribuidora Educacional, 2016.

MORAIS, Everson Matias de; LOPER, Adriane Aparecida. Interação humano-


computador. 160p. Londrina: UNOPAR, 2014.

OLIVEIRA, Ruy Flávio de; COSTA, Luiz Augusto Arruda. Sistemas de computação e
de informação. 252p. Londrina: Editora e Distribuidora Educacional, 2016.

CIZOTO, Sonelise Auxiliadora. Ética, política e sociedade. 276p. Londrina: Editora e


Distribuidora Educacional S/A, 2016.

Apache httpd Tutorial: Introduction to Server Side Includes


Disponível em https://httpd.apache.org/docs/current/howto/ssi.html

Um pouco sobre Banco de Dados Hierárquico


Disponível em https://www.profissionaisti.com.br/2011/12/um-pouco-sobre-banco-de-
dados-hierarquico/

O perfil do vendedor de software bem-sucedido


Disponível em http://reciclagemaltoqi.forumeiros.com/t8-o-perfil-do-vendedor-de-
software-bem-sucedido

11 comportamentos do vendedor de software


Disponível em http://vendadesoftware.com.br/11-comportamentos-vendedor-de-software/

A história da criptografia
Disponível em https://cryptoid.com.br/banco-de-noticias/a-historia-da-criptografia/

Segurança da Informação - Criptografia


Disponível em http://seguranca-da-informacao.info/criptografia.html

Tipos de Criptografia
Disponível em https://www.gta.ufrj.br/grad/07_1/ass-dig/TiposdeCriptografia.html

Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no Brasil


Cartilha de Segurança para Internet - Criptografia
Disponível em https://cartilha.cert.br/criptografia/