<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rayane Pimentel</title>
    <description>The latest articles on DEV Community by Rayane Pimentel (@raysh_).</description>
    <link>https://dev.to/raysh_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F244671%2Fecd4bdb8-9ff0-4e3a-acd0-a98b81676964.png</url>
      <title>DEV Community: Rayane Pimentel</title>
      <link>https://dev.to/raysh_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/raysh_"/>
    <language>en</language>
    <item>
      <title>Exercício Prático – Aplicando Conceitos de Segurança desde o Início</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 15:45:35 +0000</pubDate>
      <link>https://dev.to/raysh_/exercicio-pratico-aplicando-conceitos-de-seguranca-desde-o-inicio-1li7</link>
      <guid>https://dev.to/raysh_/exercicio-pratico-aplicando-conceitos-de-seguranca-desde-o-inicio-1li7</guid>
      <description>&lt;h2&gt;
  
  
  Cenário:
&lt;/h2&gt;

&lt;p&gt;Você faz parte de uma equipe que está iniciando o desenvolvimento de uma nova plataforma chamada &lt;strong&gt;Voluntariamos&lt;/strong&gt;, que conecta pessoas voluntárias a eventos sociais e instituições solidárias. A plataforma terá funcionalidades como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cadastro de pessoas voluntárias&lt;/li&gt;
&lt;li&gt;Cadastro de eventos&lt;/li&gt;
&lt;li&gt;Inscrição em eventos&lt;/li&gt;
&lt;li&gt;Avaliação das ações após a participação&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tarefa 01
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sua tarefa:&lt;/strong&gt;&lt;br&gt;
Com base no que foi discutido sobre SSDLC, execute as atividades abaixo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Identificação de Dados Sensíveis e Pessoais (Fase: Requisitos de Segurança):&lt;/strong&gt;&lt;br&gt;
Liste os dados que serão coletados das pessoas usuárias da plataforma. Classifique-os como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dados pessoais&lt;/li&gt;
&lt;li&gt;Dados sensíveis (conforme a LGPD)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Ex: Nome completo, CPF, localização, preferências de voluntariado, etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. Ameaças e Riscos Iniciais (Fase: Arquitetura e Design):&lt;/strong&gt;&lt;br&gt;
Escolha &lt;strong&gt;uma funcionalidade da plataforma&lt;/strong&gt; (por exemplo, o login, ou o cadastro de eventos). Responda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quais ameaças podem surgir nesse componente?&lt;/li&gt;
&lt;li&gt;Quais vulnerabilidades podem ser exploradas?&lt;/li&gt;
&lt;li&gt;Qual o risco se essa vulnerabilidade for explorada?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Estratégias de Mitigação (Fase: Arquitetura e Design):&lt;/strong&gt;&lt;br&gt;
Para as ameaças/vulnerabilidades identificadas acima, proponha ao menos &lt;strong&gt;duas estratégias de mitigação&lt;/strong&gt; utilizando princípios de segurança discutidos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Segurança por design&lt;/li&gt;
&lt;li&gt;Autenticação e autorização&lt;/li&gt;
&lt;li&gt;Criptografia&lt;/li&gt;
&lt;li&gt;Firewalls ou outras barreiras&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Reflexão Final:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Por que é importante pensar em segurança desde o início do desenvolvimento?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Tarefa 02
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Identificação de Dados Sensíveis e Pessoais&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Liste os dados coletados e classifique-os como pessoais ou sensíveis. Justifique brevemente com base no impacto de um vazamento.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Exemplo: Certificado de vacinação → Sensível (revela estado de saúde).  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. Modelagem de Ameaças com STRIDE&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Escolha a funcionalidade de &lt;strong&gt;inscrição em eventos&lt;/strong&gt;. Para cada categoria do &lt;a href="https://github.com/rayanepimentel/InfoSec-iniciante/blob/main/cursos/desenvolvimento-seguro/modelagem-ameaca/03-determinarAmeaca.md" rel="noopener noreferrer"&gt;STRIDE&lt;/a&gt;, identifique:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma ameaça possível.
&lt;/li&gt;
&lt;li&gt;Vulnerabilidade relacionada.
&lt;/li&gt;
&lt;li&gt;Risco associado.
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;(S)poofing, (T)ampering, (R)epudiation, (I)nformation Disclosure, (D)enial of Service, (E)levation of Privilege&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3. Mitigações Técnicas e Processuais&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Para uma das ameaças identificadas, proponha:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma mitigação técnica (ex: criptografia).
&lt;/li&gt;
&lt;li&gt;Uma mitigação processual (ex: treinamento de usuários).
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Caso de Teste de Segurança&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Projete um teste para validar se a mitigação técnica funciona. Inclua:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ferramenta utilizada (ex: Snyk para verificar dependências, Semgrep/Horusec para analise de vulnerabilidade).
&lt;/li&gt;
&lt;li&gt;Cenário de teste (ex: injeção de SQL no formulário de inscrição). &lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>SSDLC – Manutenção</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 15:20:36 +0000</pubDate>
      <link>https://dev.to/raysh_/ssdlc-manutencao-1872</link>
      <guid>https://dev.to/raysh_/ssdlc-manutencao-1872</guid>
      <description>&lt;p&gt;A manutenção é a fase onde a segurança se torna um ciclo contínuo. Aqui, a aplicação já está em produção, mas novas ameaças surgem diariamente, atualizações são lançadas e vulnerabilidades podem ser descobertas. O objetivo é monitorar, corrigir e evoluir o sistema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoramento Contínuo
&lt;/h2&gt;

&lt;p&gt;O sistema deve registrar e analisar atividades suspeitas, como:&lt;br&gt;
Múltiplas tentativas de login falhas por uma aluna - possível tentativa de força bruta.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma professora tentando acessar dados pessoais de alunas, o que viola as regras de acesso definidas.&lt;/li&gt;
&lt;li&gt;Acessos administrativos feitos fora do horário comercial ou de IPs desconhecidos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esses registros são auditados e utilizados para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detecção de comportamento.&lt;/li&gt;
&lt;li&gt;Acompanhamento de incidentes de segurança.&lt;/li&gt;
&lt;li&gt;Ativação de alertas automáticos com base em padrões definidos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Atualizações e Correções
&lt;/h2&gt;

&lt;p&gt;Aplicação de patches de segurança em bibliotecas e dependências.&lt;br&gt;
Atualizações regulares do sistema operacional e da aplicação.&lt;br&gt;
Reforço das configurações de segurança (como headers HTTP, senhas de serviço, etc.).&lt;/p&gt;

&lt;h2&gt;
  
  
  Resposta a Incidentes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Um plano de resposta deve estar definido:&lt;/li&gt;
&lt;li&gt;Revogação de tokens de sessões suspeitas.&lt;/li&gt;
&lt;li&gt;Suspensão temporária de contas com comportamento suspeito.
Notificação à equipe de segurança e, se necessário, aos usuários afetados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se a aluna tentar alterar dados que não pertencem a ela, o sistema deve bloquear a ação, registrar o evento e notificar a equipe.&lt;/li&gt;
&lt;li&gt;Se a professora tentar acessar dados de alunas fora de sua turma, um alerta deve ser gerado.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Auditoria e Logs
&lt;/h2&gt;

&lt;p&gt;Todos os acessos e alterações relevantes devem ser registrados e armazenados, como previsto nos requisitos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A administradora tem acesso ao painel de auditoria para:&lt;/li&gt;
&lt;li&gt;Verificar quem editou notas.&lt;/li&gt;
&lt;li&gt;Confirmar acessos a dados sensíveis.&lt;/li&gt;
&lt;li&gt;Garantir que apenas pessoas autorizadas visualizaram ou alteraram informações.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cultura de Segurança Contínua
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Treinamentos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Para Devs&lt;/li&gt;
&lt;li&gt;Para Professores/Administradores: Orientar sobre uso responsável de privilégios (com base no nosso exemplo).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Simulações:&lt;/strong&gt;&lt;br&gt;
Testar a equipe com cenários de phishing ou vazamento de dados para reforçar boas práticas.&lt;/p&gt;

&lt;p&gt;Na manutenção, a segurança é um processo contínuo e proativo. Não basta corrigir falhas reativas é preciso:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monitorar&lt;/strong&gt; para detectar ameaças em tempo real.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atualizar&lt;/strong&gt; para mitigar vulnerabilidades conhecidas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treinar&lt;/strong&gt; para manter a equipe preparada.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revisar&lt;/strong&gt; para garantir que padrões de segurança não se degradem com o tempo.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>SSDLC – Implantação Segura (Deploy)</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 15:15:59 +0000</pubDate>
      <link>https://dev.to/raysh_/ssdlc-implantacao-segura-deploy-2aok</link>
      <guid>https://dev.to/raysh_/ssdlc-implantacao-segura-deploy-2aok</guid>
      <description>&lt;p&gt;A fase de implantação é onde a aplicação é preparada para entrar em produção. No SSDLC, esse estágio não se trata apenas de garantir que todos os controles de segurança definidos nas etapas anteriores sejam implementados e validados antes da liberação para os usuários finais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92hgdkoc0mxr138b4o7u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92hgdkoc0mxr138b4o7u.png" alt="Image description" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy seguro:&lt;/strong&gt; Garantir que o processo de deploy siga práticas seguras, como a proteção de pipelines de CI/CD e a implementação de controles de acesso ao ambiente de produção.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checklist de segurança:&lt;/strong&gt; Uma checklist de segurança antes do deploy, incluindo a validação de configurações e testes finais. &lt;/p&gt;

&lt;p&gt;Exemplo: Antes de colocar a versão online, a equipe verifica:&lt;br&gt;
Se variáveis sensíveis (como &lt;code&gt;JWT_SECRET&lt;/code&gt;, &lt;code&gt;DATABASE_URL&lt;/code&gt;) estão setadas via ambiente seguro.&lt;/p&gt;

&lt;p&gt;Se todas as APIs de professoras têm o controle correto de permissões, impedindo que acessem dados pessoais.&lt;/p&gt;

&lt;p&gt;Se os headers HTTP como &lt;code&gt;Content-Security-Policy&lt;/code&gt;, &lt;code&gt;Strict-Transport-Security&lt;/code&gt; e &lt;code&gt;X-Content-Type-Options&lt;/code&gt; estão configurados.&lt;/p&gt;

&lt;p&gt;Se os tokens JWT expiram corretamente após 30minutos de inatividade, conforme os requisitos de segurança.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pentest - Profissional&lt;/strong&gt; que realiza análises detalhadas e avançadas de segurança. &lt;/p&gt;

&lt;p&gt;Exemplo: Um pentester interno simula um ataque como se fosse uma professora tentando acessar dados pessoais de alunas via requisição direta: &lt;code&gt;GET /alunas/456/dados-pessoais&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Mesmo autenticada como professora, ele consegue visualizar dados como CPF e endereço - o que indica uma falha de autorização não detectada pelos testes automatizados.&lt;/p&gt;

&lt;p&gt;Após o pentest, a equipe corrige a lógica de verificação de permissões no backend.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SSDLC – Testes</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 15:13:22 +0000</pubDate>
      <link>https://dev.to/raysh_/ssdlc-testes-12kg</link>
      <guid>https://dev.to/raysh_/ssdlc-testes-12kg</guid>
      <description>&lt;p&gt;Nesta etapa, o objetivo é validar se os controles de segurança implementados estão funcionando como esperado. Vamos aplicar diferentes tipos de testes, focando tanto no código quanto no comportamento do sistema em execução.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ferramentas e estratégias de testes utilizados:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fmlbsnmngf3fb85pzex.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fmlbsnmngf3fb85pzex.png" alt="Image description" width="622" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DAST (Dynamic Application Security Testing):
&lt;/h3&gt;

&lt;p&gt;Simula ataques reais enquanto a aplicação está rodando (por exemplo, injeção de SQL ou XSS).&lt;/p&gt;

&lt;p&gt;Identifica vulnerabilidades que não são visíveis somente no código, como falhas na autenticação, permissões ou exposições de dados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Durante um teste DAST, é feita uma tentativa de acesso ao histórico escolar de outra aluna alterando o parâmetro alunaId na URL.&lt;br&gt;
&lt;code&gt;GET /alunas/123/historico&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Mesmo autenticada como aluna 456, a requisição retorna os dados da aluna 123, isso indica uma falha grave de controle de acesso, detectada somente em tempo de execução, pois o endpoint não validou corretamente o ID do token JWT.&lt;/p&gt;
&lt;h3&gt;
  
  
  Code Review com foco em segurança:
&lt;/h3&gt;

&lt;p&gt;Revisão manual ou assistida (com ferramentas como Horusec) para detectar más práticas de codificação, como uso de funções inseguras, falta de validações, exposição de dados sensíveis.&lt;/p&gt;

&lt;p&gt;Fundamental para identificar lógicas de negócio inseguras que passam despercebidas em testes automatizados.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Ao revisar o código, encontra-se um trecho onde a professora pode editar dados pessoais da aluna, mesmo sendo algo que ela não deveria ter permissão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usuario&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;professora&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;atualizarDadosPessoais&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;alunaId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;novosDados&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O code review ajuda a identificar essa lógica insegura de negócio, que permite a edição de dados sensíveis por quem não tem essa permissão.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SSDLC – Implementação</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 15:09:47 +0000</pubDate>
      <link>https://dev.to/raysh_/ssdlc-implementacao-2mae</link>
      <guid>https://dev.to/raysh_/ssdlc-implementacao-2mae</guid>
      <description>&lt;p&gt;Essa é a fase que nós, pessoas desenvolvedoras, iremos atuar continuamente. Assim como arquitetos de software precisam entender sobre segurança, nós também precisamos conhecer sobre desenvolvimento seguro. Se esse conceito é novo para você e você trabalha com desenvolvimento web, recomendo começar pelo &lt;a href="https://owasp.org/www-project-top-ten/" rel="noopener noreferrer"&gt;OWASP Top 10&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mas a segurança vai além disso! Também existem outras referências importantes, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CWE e CWE Top 25 - Lista de fraquezas comuns de segurança em software.&lt;/li&gt;
&lt;li&gt;CERT - Diretrizes para programação segura em diferentes linguagens.&lt;/li&gt;
&lt;li&gt;CVE - Base de dados de vulnerabilidades conhecidas em produtos e softwares específicos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesta fase, colocamos a segurança em prática através de código seguro e ferramentas automatizadas. &lt;br&gt;
Já temos o relatório da "Modelagem de ameaças", sabemos quais são as possíveis ameaças e também como mitiga-las. &lt;br&gt;
Também podemos usar a segurança na criação de histórias. Veja um exemplo:&lt;/p&gt;
&lt;h2&gt;
  
  
  Exemplo de Codificação Segura com OWASP ASVS
&lt;/h2&gt;

&lt;p&gt;O OWASP ASVS (Application Security Verification Standard) é um guia estruturado para validar controles de segurança em aplicações web. Ele pode ser usado como checklist para assegurar que requisitos de segurança estão sendo cumpridos durante a codificação.&lt;/p&gt;

&lt;p&gt;No login da plataforma, precisamos proteger contra acesso não autorizado.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problema: Precisamos proteger o sistema contra acessos não autorizados.&lt;/li&gt;
&lt;li&gt;Fonte: ASVS (Application Security Verification Standard)&lt;/li&gt;
&lt;li&gt;Seção do ASVS: V3 Gestão de Sessão&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Formato da User Story:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Como [tipo de usuário], eu quero [meta ou objetivo] para que [benefício ou resultado]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;User Story:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Como uma pessoa desenvolvedora, eu quero que o sistema expire automaticamente as sessões após 30 minutos de inatividade, para reduzir o risco de acesso não autorizado."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Requisito de Segurança (ASVS):&lt;/strong&gt;&lt;br&gt;
 "O sistema deve expirar automaticamente as sessões após 30 minutos de inatividade, conforme o OWASP ASVS, seção V3 (Gestão de Sessão)."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comportamento Esperado:&lt;/strong&gt;&lt;br&gt;
Expiração automática das sessões após 30 minutos de inatividade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Critério Específico:&lt;/strong&gt;&lt;br&gt;
A sessão deve ser expirada após 30 minutos de inatividade do usuário.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referência ao OWASP ASVS:&lt;/strong&gt;&lt;br&gt;
Seção V3 (Gestão de Sessão) do OWASP ASVS, que trata da gestão segura das sessões e o tempo limite de inatividade.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhshkle96ddt4q1c7pmxj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhshkle96ddt4q1c7pmxj.png" alt="Image description" width="800" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementação em Node.js (Express):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express-session&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dotenv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Carrega variáveis de ambiente&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;session&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SESSION_SECRET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Chave armazenada em variável de ambiente&lt;/span&gt;
  &lt;span class="na"&gt;resave&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;saveUninitialized&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;secure&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Só transmite via HTTPS&lt;/span&gt;
    &lt;span class="na"&gt;httpOnly&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Impede acesso via JavaScript&lt;/span&gt;
    &lt;span class="na"&gt;maxAge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="c1"&gt;// 30 minutos&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse foi apenas um exemplo simples de como o time pode usar ASVS para criar suas histórias.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementação de Ferramentas de Segurança
&lt;/h2&gt;

&lt;p&gt;Nessa fase também implementamos ferramentas de segurança que complementam o desenvolvimento de código seguro como SAST - analisa o código-fonte em busca de vulnerabilidades. Essas ferramentas não são a única solução, mas são aliados poderosos para aumentar a segurança da aplicação. Não podemos depender exclusivamente delas, mas usá-las como um suporte para mitigar vulnerabilidades.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ferramentas para Automatizar a Segurança:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Análise Estática de Código:&lt;/strong&gt;&lt;br&gt;
Como SonarQube ou ESLint com regras de segurança para identificar vulnerabilidades durante o desenvolvimento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verificação de Dependências:&lt;/strong&gt;&lt;br&gt;
Como Snyk ou Dependabot para detectar bibliotecas com vulnerabilidades (ex: npm audit).&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementação SAST no pipeline
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmabaqe58vz1tvpzhz7kf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmabaqe58vz1tvpzhz7kf.png" alt="Image description" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;main&lt;/strong&gt;: main é o branch principal da aplicação. É o código estável.&lt;br&gt;
&lt;strong&gt;feature&lt;/strong&gt;: é onde estamos escrevendo nossos códigos&lt;br&gt;
&lt;strong&gt;commit&lt;/strong&gt;: commit das nossas alterações&lt;br&gt;
&lt;strong&gt;pull request&lt;/strong&gt;: estamos enviando uma solicitação para mesclar nossas alterações na main&lt;br&gt;
&lt;strong&gt;github action&lt;/strong&gt;: quando criamos PR ou fazemos um push com github actions configurado, ele é acionado para executar os fluxos de trabalho definidos.&lt;br&gt;
&lt;strong&gt;CI&lt;/strong&gt;: Toda vez que ele foi acionado, ele executa o trabalho: clona o projeto, roda todos os testes, gerar o build(arquivos que você precisa para a aplicação rodar) da aplicação. E também no nosso caso, executa o Horusec. Ou seja, todas as vezes que fizermos um PR, esse processo garante que código de forma segura possa estar integrado na aplicação principal.&lt;br&gt;
&lt;strong&gt;horusec&lt;/strong&gt;: O Horusec é uma ferramenta de segurança que analisa o código em busca de vulnerabilidades de segurança.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notas:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CVE e CWE: Consulte o &lt;a href="https://cve.mitre.org/" rel="noopener noreferrer"&gt;CVE MITRE&lt;/a&gt; e &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fcwe.mitre.org%2Ftop25%2F" rel="noopener noreferrer"&gt;CWE Top 25&lt;/a&gt; para priorizar correções.&lt;/li&gt;
&lt;li&gt;LGPD: Garanta que dados sensíveis sejam criptografados em repouso (ex: PostgreSQL com pgcrypto).&lt;/li&gt;
&lt;li&gt;Documentação: Mantenha um registro de decisões de segurança para auditorias futuras.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>SSDLC – Arquitetura e Design</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 15:00:38 +0000</pubDate>
      <link>https://dev.to/raysh_/ssdlc-arquitetura-e-design-3m3a</link>
      <guid>https://dev.to/raysh_/ssdlc-arquitetura-e-design-3m3a</guid>
      <description>&lt;p&gt;Com os requisitos de segurança bem definidos, a próxima etapa envolve a elaboração da arquitetura, do design e da estrutura do software, assegurando que ele seja seguro por padrão.&lt;/p&gt;

&lt;p&gt;Esse cuidado se alinha ao princípio de Security by Design, onde a segurança é tratada como uma característica essencial desde a concepção da aplicação, e não como um complemento posterior.&lt;/p&gt;

&lt;p&gt;Aqui, são tomadas decisões sobre como os componentes interagem, como as camadas de segurança serão aplicadas e como mitigar ameaças conhecidas.&lt;/p&gt;

&lt;p&gt;Algumas perguntas a serem respondidas incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Como os serviços serão autenticados entre si? Haverá uso de tokens, certificados ou chaves de API?&lt;/li&gt;
&lt;li&gt;Como será feito o processo de transmissão de dados? Será utilizado HTTPS, TLS ou outros mecanismos de criptografia?&lt;/li&gt;
&lt;li&gt;Qual será o serviço de nuvem ou servidor web utilizado e como será configurada a segurança?&lt;/li&gt;
&lt;li&gt;Existem padrões de segurança já estabelecidos para serem seguidos, como OWASP Top 10 ou NIST?&lt;/li&gt;
&lt;li&gt;Qual linguagem será usada (por exemplo, JavaScript, Python, Java)?&lt;/li&gt;
&lt;li&gt;Quais frameworks e bibliotecas serão utilizados (por exemplo, NestJS, Angular, Django)?&lt;/li&gt;
&lt;li&gt;Qual sistema de gerenciamento de banco de dados será adotado (por exemplo, PostgreSQL, MongoDB)?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg999q8l1sqmqxjl9mupj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg999q8l1sqmqxjl9mupj.png" alt="Image description" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tecnologias Utilizadas
&lt;/h2&gt;

&lt;p&gt;No exemplo, a plataforma foi desenvolvida com Angular para o front-end, NestJS para o back-end, e PostgreSQL para o gerenciamento de dados hospedado em um serviço de nuvem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autenticação entre Serviços&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A comunicação entre a plataforma (Angular) e o BFF (Backend For Frontend) é realizada por meio de Tokens (JSON Web Tokens). Esses tokens são emitidos pelo Identity Provider após a validação das credenciais (login e senha) da usuária, garantindo que apenas usuários autenticados possam acessar as funcionalidades da aplicação.&lt;/p&gt;

&lt;p&gt;Os serviços autenticados incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plataforma → BFF&lt;/strong&gt;: A comunicação é feita de forma segura, protegendo dados de login e informações pessoais.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BFF → Identity Provider&lt;/strong&gt;: O BFF valida as credenciais e obtém o token para autenticação subsequente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BFF → Servidor de Aplicação&lt;/strong&gt;: O BFF encaminha a requisição ao servidor de aplicação, utilizando o token para assegurar que a solicitação seja de um usuário autenticado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Transmissão de Dados&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocolo: A transmissão de dados entre os componentes da plataforma é realizada utilizando HTTPS, garantindo que a comunicação seja criptografada.&lt;/li&gt;
&lt;li&gt;Mecanismo de Criptografia: TLS/SSL é usado entre o servidor de aplicação e o banco de dados (hospedado em um serviço de nuvem).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Firewalls&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Entre o BFF e o servidor de aplicação, são implementados firewalls para atuar como barreiras de proteção. Esses firewalls filtram o tráfego e protegem o servidor de aplicação contra acessos não autorizados e ataques externos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modelagem de ameaça
&lt;/h2&gt;

&lt;p&gt;Nessa etapa, também realizamos a modelagem de ameaças para identificar possíveis ameaças e ataques, além de desenvolver estratégias para mitigá-las.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65mtyeflxsqw68c95eoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65mtyeflxsqw68c95eoc.png" alt="Image description" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jkfwyzreximi6hvbrc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jkfwyzreximi6hvbrc0.png" alt="Image description" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo simples:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;O que pode dar errado? Aqui identificamos possíveis ameaças.&lt;/li&gt;
&lt;li&gt;O que você deve fazer em relação a essas ameaças? Com uma lista de ameaças identificadas, o próximo passo é desenvolver estratégias para mitiga-las.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Exemplo de Mitigação:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alvo: Login (alguém se passando por outro usuário)&lt;/li&gt;
&lt;li&gt;Estratégia de Mitigação: Identificação e autenticação de login (o sistema sabe/tem)&lt;/li&gt;
&lt;li&gt;Técnica de Mitigação: Senha, Tokens e MFA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Uma técnica comum para modelagem de ameaças é o modelo &lt;strong&gt;STRIDE&lt;/strong&gt;, que classifica ameaças em categorias como Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service e Elevation of Privilege. Se você quiser saber mais sobre como modelagem de ameaça, eu escrevi sobre &lt;a href="https://github.com/rayanepimentel/InfoSec-iniciante/blob/main/cursos/desenvolvimento-seguro/modelagem-ameaca/00-modelagem.md" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Usaremos a Modelagem na ameaça na próxima fase.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SSDLC – Requisitos de segurança (planejamento)</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 14:58:47 +0000</pubDate>
      <link>https://dev.to/raysh_/ssdlc-requisitos-de-seguranca-planejamento-4gom</link>
      <guid>https://dev.to/raysh_/ssdlc-requisitos-de-seguranca-planejamento-4gom</guid>
      <description>&lt;p&gt;Nessa fase, são definidos os requisitos de segurança, funcionais e não funcionais, como as regras que devem ser seguidas, incluindo normas como a LGPD. Além disso, as decisões tomadas aqui influenciam diretamente a arquitetura e o design do sistema, garantindo que a segurança seja considerada desde a estruturação inicial.&lt;/p&gt;

&lt;p&gt;Algumas perguntas importantes a serem respondidas incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qual é a classificação dos dados de acordo com as políticas da empresa? Isso inclui dados pessoais e sensíveis, e deve ser especificado como cada tipo de dado será tratado.&lt;/li&gt;
&lt;li&gt;Quem terá acesso aos dados? Detalhar quem tem permissão para visualizar, alterar ou excluir os dados, com base nas políticas de controle de acesso.&lt;/li&gt;
&lt;li&gt;Políticas de Exclusão: Devemos definir e documentar políticas claras para a exclusão de dados, incluindo como e quando os dados devem ser removidos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por exemplo, no nosso sistema, temos dados pessoais e acadêmicos das alunas. Quem terá permissão para ver esses dados? Quem pode alterá-los? Quais são as políticas de exclusão aplicadas?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furogdaa70acb0cnd22kp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furogdaa70acb0cnd22kp.png" alt="Image description" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na imagem, podemos ver que a aluna possui dados pessoais (nome, CPF, endereço, data de nascimento) e dados acadêmicos (notas, RA, frequência e histórico escolar).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nota Importante&lt;/strong&gt;:&lt;br&gt;
Devemos lembrar que, na classificação de dados, existem os dados sensíveis, que são aqueles que revelam origem racial ou étnica, convicções religiosas ou filosóficas, opiniões políticas, filiação sindical, informações genéticas, biométricas, sobre a saúde ou a vida sexual de uma pessoa, conforme estabelecido pela LGPD.&lt;/p&gt;

&lt;p&gt;Dados pessoais: são aqueles que permitem a identificação direta ou indireta de uma pessoa.&lt;br&gt;
Dados sensíveis: dentro dos dados pessoais, os dados sensíveis requerem maior cuidado durante a coleta e o tratamento, pois estão diretamente relacionados aos aspectos mais íntimos da personalidade do cidadão.&lt;/p&gt;

&lt;p&gt;Voltando ao exemplo, a aluna tem acesso apenas aos seus próprios dados(pessoais e acadêmicos), enquanto a professora tem acesso de visualização e também de edição apenas aos dados acadêmicos de suas alunas, podendo, por exemplo, alterar notas ou incluir justificativas para faltas. Já a administradora tem acesso a todos os dados pessoais, acadêmicos e administrativos de todos os usuários.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Segurança no Desenvolvimento – SSDLC</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 14:58:04 +0000</pubDate>
      <link>https://dev.to/raysh_/seguranca-no-desenvolvimento-da-teoria-a-pratica-ssdlc-3e1k</link>
      <guid>https://dev.to/raysh_/seguranca-no-desenvolvimento-da-teoria-a-pratica-ssdlc-3e1k</guid>
      <description>&lt;p&gt;Para começarmos a entender o que é SSDLC (Secure Software Development Life Cycle), trouxe uma analogia para vocês. Eu sempre penso em como explicaria algo novo para a minha avó. Então, vamos à analogia e depois à explicação com exemplos.&lt;br&gt;
Analogia: Casa&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqbx4afltkrsrq3cagm85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqbx4afltkrsrq3cagm85.png" alt="Image description" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Análise de Requisitos (Planejamento):&lt;/strong&gt;  Nesta fase, você identifica os materiais e requisitos legais necessários para construir a casa, como consultar a prefeitura sobre regras e normas de construção.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arquitetura e Design&lt;/strong&gt;: Você desenha a planta da casa, escolhendo materiais, planejando entradas e saídas, e definindo medidas de segurança, como alarme e fechaduras.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementação&lt;/strong&gt;: A casa começa a ser construída. Você percebe que, além do alarme, precisa adicionar câmeras para garantir mais segurança.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testes&lt;/strong&gt;: Antes de entregar a casa, a equipe testa o funcionamento das instalações, como eletricidade, alarmes e janelas. Verifica se tudo está em ordem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implantação&lt;/strong&gt;: Antes de entregar a casa aos proprietários, engenheiros fazem uma análise para garantir que tudo foi construído corretamente. Se estiver tudo certo, a casa é entregue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manutenção&lt;/strong&gt;: A casa está funcionando, mas você precisa fazer manutenções regulares. O alarme ou câmeras podem precisar de atualizações ou trocas devido a falhas descobertas.&lt;/p&gt;

&lt;p&gt;Bom, agora vamos ao SSDLC :)&lt;/p&gt;

&lt;h2&gt;
  
  
  SSDLC
&lt;/h2&gt;

&lt;p&gt;Como vimos na analogia o SSDLC pode ser considerado uma construção de uma casa, com um Lego, onde cada fase do processo de desenvolvimento de software seguro é uma peça importante que, quando combinada com as outras, forma um software seguro.&lt;/p&gt;

&lt;p&gt;Ou seja, devemos pensar em segurança desde o início, já no planejamento, e não apenas a partir da codificação. A segurança deve estar presente em todas as fases do ciclo de desenvolvimento.&lt;br&gt;
Nosso foco está na prevenção de vulnerabilidades desde o começo e na promoção de uma mudança cultural dentro das equipes de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Agora, vamos entender como funciona cada fase desse ciclo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50w15ja5mue1vauygo3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50w15ja5mue1vauygo3s.png" alt="Image description" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Segurança no Desenvolvimento: Da Teoria à Prática – Introdução</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 20 May 2025 14:57:38 +0000</pubDate>
      <link>https://dev.to/raysh_/seguranca-no-desenvolvimento-da-teoria-a-pratica-introducao-3fa9</link>
      <guid>https://dev.to/raysh_/seguranca-no-desenvolvimento-da-teoria-a-pratica-introducao-3fa9</guid>
      <description>&lt;p&gt;Pensando em segurança no desenvolvimento de software, onde geralmente a incluímos? Como pessoa desenvolvedora, posso pensar na fase de codificação, testes e implementação. Mas, se pensarmos um pouco antes, será que o início do desenvolvimento do software é na codificação? Não, sabemos que a codificação não é o começo. Então, por que não pensar e incluir segurança desde o início?&lt;br&gt;
Como incorporar segurança desde o começo, antes mesmo da codificação? Por que vulnerabilidades conhecidas, como XSS e SQL Injection, ainda estão presentes em software?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsn8npgbd7qgrxaijapgt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsn8npgbd7qgrxaijapgt.png" alt="Image description" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SQL Injection teve sua primeira identificação em 1998. Fonte: &lt;a href="https://phrack.org/issues/54/8.html" rel="noopener noreferrer"&gt;https://phrack.org/issues/54/8.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff48bvggxysg5hkux78k9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff48bvggxysg5hkux78k9.png" alt="Image description" width="448" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo de report SQL Injection de julho de 2024. Fonte: &lt;a href="https://hackerone.com/reports/2597543" rel="noopener noreferrer"&gt;https://hackerone.com/reports/2597543&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para responder a essas questões, vamos entender como funciona SSDLC (Secure Software Development Life Cycle) e como ele pode ser aplicado tanto em novos projetos quanto em softwares em desenvolvimento.&lt;br&gt;
Antes de entrarmos em SSDLC, vamos entender alguns conceitos importantes. &lt;/p&gt;

&lt;h2&gt;
  
  
  Vulnerabilidade, Ameaça e Risco
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l2c98hai5lgg3lbw9fn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l2c98hai5lgg3lbw9fn.png" alt="Image description" width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No exemplo, temos uma página de login com os campos "username" e "password". Um agente mal-intencionado (a ameaça) deseja acessar o sistema para obter dados ou privilégios que ele não deveria ter. Ele pode tentar explorar brechas de segurança conhecidas. Quando ele encontra uma falha de segurança por exemplo no login (a vulnerabilidade), ele explora essa falha.&lt;/p&gt;

&lt;p&gt;Se o agente consegue acessar o sistema, o risco não é só o ato de acessar o sistema em si, mas sim a possibilidade de que a ameaça explore a vulnerabilidade e cause um impacto negativo, como roubo de dados, comprometimento do sistema, ou controle total, especialmente se ele conseguir fazer login como administrador. O risco acontece quando uma vulnerabilidade é explorada, e o impacto desse risco varia conforme o tipo de acesso obtido (por exemplo, um login de administrador representa um risco maior para a empresa).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A vulnerabilidade é o ponto fraco que pode ser explorado por uma ameaça, resultando em risco de danos ao sistema. &lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>sddlc</category>
      <category>security</category>
      <category>owasp</category>
      <category>developer</category>
    </item>
    <item>
      <title>Parte I.III Operadores Lógicos</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Sat, 07 Aug 2021 21:35:14 +0000</pubDate>
      <link>https://dev.to/raysh_/parte-i-iii-operadores-logicos-2nn0</link>
      <guid>https://dev.to/raysh_/parte-i-iii-operadores-logicos-2nn0</guid>
      <description>&lt;h2&gt;
  
  
  Operadores Lógicos
&lt;/h2&gt;

&lt;p&gt;O Javascript suporta 3 operadores lógicos, que são aplicadas aos valores booleanos(true e false). &lt;br&gt;
São: &lt;code&gt;&amp;amp;&amp;amp;, || ou !&lt;/code&gt; ou AND, OR, ou NOT&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operador &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;(AND) o valor é &lt;code&gt;true&lt;/code&gt;, se ambos os dados fornecidos forem &lt;code&gt;true&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Operador &lt;code&gt;||&lt;/code&gt;(OR) o valor é &lt;code&gt;true&lt;/code&gt;, se uns dos dados fornecidos for &lt;code&gt;true&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Operador &lt;code&gt;!&lt;/code&gt;(NOT), operador de negação, inverte o valor dado a ele - &lt;code&gt;!true&lt;/code&gt; produz &lt;code&gt;false&lt;/code&gt; e &lt;code&gt;!false&lt;/code&gt; produz &lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemplo: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Caso hipotético: Para participar de um curso de programação, você precisa ter 18 anos ou mais e morar em São Paulo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nós temos duas condições, você precisa ter 18 anos ou mais &lt;code&gt;AND&lt;/code&gt; morar em São Paulo, ou seja os dois dados fornecidos precisam serem &lt;code&gt;true&lt;/code&gt;. Se sim, você pode participar(true), caso contrário não(false).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;se&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;cidade&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;São Paulo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Maravilha, você pode participar do curso&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;senão&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Poxa, infelizmente você não tem todos os critérios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Para continuarmos, você precisa entender o conceito de &lt;code&gt;if else&lt;/code&gt; o &lt;code&gt;se senão&lt;/code&gt; do nosso caso hipotético.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Definição MDN&lt;/p&gt;

&lt;p&gt;"A condicional if  é uma estrutura condicional que executa a afirmação, dentro do bloco, se determinada condição for verdadeira. Se for falsa, executa as afirmações dentro de else."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sintaxe
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;condição&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;afirmação1&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nx"&gt;afirmação2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
Hoje vai fazer frio?&lt;br&gt;
Se sim, preciso de casaco;&lt;br&gt;
Senão, não preciso de casaco.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;tempoHoje&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;frio&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tempoHoje&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;frio&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;preciso de casaco&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;não preciso de casaco&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas o tempo de São Paulo é louco (rs) e pode fazer frio e calor no mesmo dia, como poderíamos fazer isso utilizando if else?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;tempoHoje&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;frio&amp;amp;Calor&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tempoHoje&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;frio&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;preciso de casaco&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tempoHoje&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;frio&amp;amp;Calor&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Use roupas leves, mas leve casaco&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Use roupas leves&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora que você já entende como funciona o &lt;code&gt;if else&lt;/code&gt;, vamos praticar com os operadores lógicos. Mas antes disso, vamos de revisão.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operador &amp;amp;&amp;amp; (AND) e operador || (OR)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;th&gt;a&lt;/th&gt;
    &lt;th&gt;b&lt;/th&gt;
    &lt;th&gt;a &amp;amp;&amp;amp; b &lt;/th&gt;
    &lt;th&gt;a || b &lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;true&lt;/td&gt;
    &lt;td&gt;true&lt;/td&gt;
    &lt;td&gt;true&lt;/td&gt;
    &lt;td&gt;true&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;true&lt;/td&gt;
    &lt;td&gt;false&lt;/td&gt;
    &lt;td&gt;false&lt;/td&gt;
    &lt;td&gt;true&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;false&lt;/td&gt;
    &lt;td&gt;true&lt;/td&gt;
    &lt;td&gt;false&lt;/td&gt;
    &lt;td&gt;true&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;false&lt;/td&gt;
    &lt;td&gt;false&lt;/td&gt;
    &lt;td&gt;false&lt;/td&gt;
    &lt;td&gt;false&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Operador ! (NOT)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;a&lt;/th&gt;
&lt;th&gt;!a&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Exemplos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Já fizemos alguns exemplos com &amp;amp;&amp;amp;, mas a pratica é essencial.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No exemplo o retorno será false, já que num1 não é maior ou igual 15. E para ser true, precisamos que as duas informações sejam true&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agora o mesmo exemplo, mudando o operador &amp;amp;&amp;amp; por ||
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com || (OR), o retorno será true, já que para ser true só precisamos de uma informação verdadeira. &lt;br&gt;
num1 é não é maior ou igual a 15 (false), mas num2 é maior ou igual a 4 (true), por isso o retorno true.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utilizando o operador ! (NOT)
Como já sabemos o operador !, inverte o valor, se for true será false, e se for false será true.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basicamente isso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O retorno será false.&lt;br&gt;
Vamos analisar, sabemos que &lt;code&gt;a = 2&lt;/code&gt; e &lt;code&gt;b = 5&lt;/code&gt;&lt;br&gt;
na condição &lt;code&gt;!a == 2&lt;/code&gt;, &lt;code&gt;a == 2&lt;/code&gt; é &lt;code&gt;true&lt;/code&gt;, mas como a tem o operador de negação &lt;code&gt;!&lt;/code&gt; -&amp;gt; &lt;code&gt;!a&lt;/code&gt; inverte e &lt;code&gt;true&lt;/code&gt; torna &lt;code&gt;false&lt;/code&gt;.&lt;br&gt;
Então &lt;code&gt;!a == 2&lt;/code&gt; é &lt;code&gt;false&lt;/code&gt;&lt;br&gt;
e &lt;code&gt;b == 5&lt;/code&gt; é &lt;code&gt;true&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Só que temos outro operador lógico, o &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;, como também sabemos para o retorno ser &lt;code&gt;true&lt;/code&gt;, precisamos que os dois sejam true. E no nosso exemplo só &lt;code&gt;b&lt;/code&gt; é &lt;code&gt;true&lt;/code&gt; e &lt;code&gt;a&lt;/code&gt; é &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exercício
&lt;/h3&gt;

&lt;p&gt;Agora que já entendemos como funciona os operadores lógicos e if else, vamos aos exercícios&lt;/p&gt;

&lt;p&gt;1 - Pergunte ao usuário a sua idade, certifique de receber apenas números inteiros&lt;br&gt;
2 - Retorne se ele já tem idade para votar ou não&lt;br&gt;
3 - Crie um joguinho com dois participantes, pergunte para ambos "Olá, diga um número qualquer de 0 - 10"&lt;br&gt;
Depois retorne quem informou o maior número, se ambos informaram o mesmo número ou se teve algum que não informou um número válido entre 0 e 10&lt;/p&gt;

&lt;p&gt;&lt;a href="https://replit.com/@elasUnidas/IniciandoJS-ParteIIII#script.js" rel="noopener noreferrer"&gt;Link do Exercício&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Parte I.II Operadores</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Sat, 07 Aug 2021 21:34:29 +0000</pubDate>
      <link>https://dev.to/raysh_/parte-i-ii-operadores-1o35</link>
      <guid>https://dev.to/raysh_/parte-i-ii-operadores-1o35</guid>
      <description>&lt;h2&gt;
  
  
  Operadores
&lt;/h2&gt;



&lt;h3&gt;
  
  
  Operadores Aritméticos
&lt;/h3&gt;

&lt;p&gt;São os operadores que já conhecemos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[+] adição - adiciona números
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;soma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//13&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[-] subtração - subtrai números
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;subtrai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[*] multiplicação - multiplica números
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;multiplica&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[/] divisão - divide números
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;divide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[%] modulo - devolve o resto da divisão.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;resto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[++] incremento - incrementa números.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//11&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[--] decremento - diminui números.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//9&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[**] exponenciação - calcula a base elevada a potência do expoente
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Operadores de Comparação
&lt;/h3&gt;

&lt;p&gt;Faz uma comparação entre valores e/ tipos e retorna true ou false.&lt;br&gt;
É como se vocês estivesse perguntando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;isso&lt;/span&gt; &lt;span class="nx"&gt;é&lt;/span&gt; &lt;span class="s2"&gt;`operador de comparação`&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;aquilo&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nc"&gt;Sim &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;ou&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Não&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;[&amp;gt;] maior ou [&amp;lt;] menor
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferirNovamente&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;[&amp;gt;=] maior ou igual ou [&amp;lt;=] menor ou igual
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferirNovamente&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;porqueEIgual&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;[==] igualdade - compara se os &lt;code&gt;valores&lt;/code&gt; são iguais(true)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferirNovamente&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;[!=] compara se os &lt;code&gt;valores&lt;/code&gt; são diferentes
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferirNovamente&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;[===] igualdade - compara se os &lt;code&gt;valores&lt;/code&gt; e os &lt;code&gt;tipos&lt;/code&gt; são iguais
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//tipo number e valor 10&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//tipo number e valor 5&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;//tipo string e valor 10&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//tipo number e valor 5&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;span class="c1"&gt;//a e b são do tipo number, mas valores diferentes&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferirNovamente&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;span class="c1"&gt;// a e c são tipos diferentes, mas com o mesmo valores&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;span class="c1"&gt;// b e c são do mesmo tipo e tem o mesmo valor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;[!==] diferente - compara se os &lt;code&gt;valores&lt;/code&gt; ou os &lt;code&gt;tipos&lt;/code&gt; são diferentes
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//tipo number e valor 10&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//tipo number e valor 5&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;//tipo string e valor 10&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//tipo number e valor 5&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;span class="c1"&gt;//a e b são do tipo number, mas valores diferentes&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;conferirNovamente&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//true&lt;/span&gt;
&lt;span class="c1"&gt;// a e c são tipos diferentes, mas com o mesmo valores&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;resultado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;span class="c1"&gt;// b e c são do mesmo tipo e tem o mesmo valor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Exercício
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Como vimos podemos fazer várias comparações.
O que você acha que acontecerá se comparamos o menor ou o maior utilizando &lt;code&gt;string&lt;/code&gt;?
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;teste&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;javascript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;abc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;def&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você não entendeu o que aconteceu, veja essa explicação &lt;br&gt;
&lt;a href="https://replit.com/@elasUnidas/IniciandoJs-ParteIII#script.js" rel="noopener noreferrer"&gt;Explicação&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Parte I.I - Tipos de dados</title>
      <dc:creator>Rayane Pimentel</dc:creator>
      <pubDate>Tue, 27 Jul 2021 00:38:22 +0000</pubDate>
      <link>https://dev.to/raysh_/parte-i-i-tipos-de-dados-4k4l</link>
      <guid>https://dev.to/raysh_/parte-i-i-tipos-de-dados-4k4l</guid>
      <description>&lt;h2&gt;
  
  
  Tipos de dados
&lt;/h2&gt;

&lt;h3&gt;
  
  
  O que são?
&lt;/h3&gt;

&lt;p&gt;Tudo o que escrevemos em javascript é um tipo de dado. &lt;br&gt;
Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;13&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;olá&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Quais são os tipos?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;String&lt;/em&gt;: É uma sequência de zero ou mais caracteres escritos entre aspas simples &lt;code&gt;' '&lt;/code&gt; ou dupla &lt;code&gt;" "&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;issoAquiE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Uma string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;issoAquiTambem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;13&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;number&lt;/em&gt; variável tipada com número e sem "aspas".
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;pesoDaBanana&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.250&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em javascrip &lt;em&gt;number&lt;/em&gt; por ser inteiro &lt;code&gt;int&lt;/code&gt; ou flutuante &lt;code&gt;float&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//int&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;pesoDaBanana&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.250&lt;/span&gt; &lt;span class="c1"&gt;//float&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;booleans&lt;/em&gt; retorna se o valor é verdadeiro &lt;code&gt;true&lt;/code&gt; ou falso &lt;code&gt;false&lt;/code&gt;.
Exemplo:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;valorUm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;valorDois&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;maiorOuMenor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;valorUm&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;valorDois&lt;/span&gt; 

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;maiorOuMenor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;//true&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;valorIgual&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;valorDois&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;valorIgual&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;//false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
&lt;br&gt;
~~~ Pequena pausa ~~~&lt;br&gt;
Como sabemos tudo o que estiver entre "aspas" é string, mesmo números dentro de " ", são string.&lt;br&gt;
&lt;em&gt;Dica&lt;/em&gt; para saber qual tipo de dado utilizamos &lt;em&gt;typeof(nomeDaVarivel)&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;myVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Olá Mundo!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;kids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myVar&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;//string&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;kids&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;//number&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;myVar1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;13&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myVar1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="c1"&gt;//string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
&lt;br&gt;
~~~ Fim da pausa ~~~&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;undefined&lt;/em&gt;: é quando declaramos uma variável sem valor.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;myStr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myStr&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;&lt;span class="c1"&gt;//undefined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;array&lt;/em&gt;* com array podemos armazenar vários valores em uma única variável, como se fosse uma lista, ao invés de declarar item por item, você declara todos em uma única variável.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;semana&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Domingo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Segunda&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Terça&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Quarta&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Quinta&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sexta&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sábado&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;No exemplo &lt;code&gt;let semana&lt;/code&gt; todos itens era uma &lt;code&gt;string&lt;/code&gt;, mas você pode armazenar vários tipos em uma mesma array. &lt;br&gt;
Exemplo, uma array pode ter string, number, boolean...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sequence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt;  &lt;span class="nx"&gt;random&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tree&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;795&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;object&lt;/em&gt; é uma associação de propriedades com nome (chave) e valor.
Exemplo. quando declaramos um carro ou uma pessoa.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Olivia&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Benson&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;//chave seria firstName, lastName e age&lt;/span&gt;
&lt;span class="c1"&gt;//valor seria: "Olivia", "Benson" e 57&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Fiat&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;500&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;p.s: não se preocupe, esse primeiro momento pode ser que fique confuso, mas depois abordaremos mais sobre os tipos de dados e como podemos trabalhar com eles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exercício
&lt;/h3&gt;

&lt;p&gt;1 - Pergunte ao usuário qual a idade dele.&lt;br&gt;
Certifique de receber só números inteiros, mesmo que o usuário digite número flutuante&lt;/p&gt;

&lt;p&gt;2 - Crie uma nova variável, que irá receber a idade do usuário e verifica se é maior que 18 e exiba no console.log()&lt;/p&gt;

&lt;p&gt;3- Depois exiba pro usuário a seguinte mensagem:&lt;br&gt;
"Olá usuário a sua idade é xxx"&lt;br&gt;
xxx será o valor da idade do usuário. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://replit.com/@elasUnidas/IniciandoJS-ParteII#script.js" rel="noopener noreferrer"&gt;Link do Exercício parte I.I&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
