{"id":95609,"date":"2022-09-13T23:44:54","date_gmt":"2022-09-13T21:44:54","guid":{"rendered":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/"},"modified":"2020-12-04T11:17:16","modified_gmt":"2020-12-04T14:17:16","slug":"privacidad-de-atributos-en-javascript","status":"publish","type":"post","link":"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/","title":{"rendered":"Confidentialit\u00e9 des attributs en Javascript"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/#Escenario-sin-proteccion\" >Escenario sin protecci\u00f3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/#Propiedades-de-ocultacion-con-cierres\" >Propiedades de ocultaci\u00f3n con cierres<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/#Uso-de-simbolos\" >Uso de s\u00edmbolos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/#Uso-de-WeakMaps\" >Uso de WeakMaps<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/#Acceso-a-propiedades-de-otras-instancias\" >Acceso a propiedades de otras instancias<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<div itemprop=\"articleBody\">\n<p>La seguridad es un tema que no debe ser tomado a la ligera. Quiz\u00e1s los programadores novatos desconozcan algunas de estas t\u00e9cnica de seguridad en JavaScript, e incluso uno que otro programador experimentado puede que tambi\u00e9n ignore estas pr\u00e1cticas. Sin embargo, mas all\u00e1 de la importancia de conocer estos m\u00e9todos es praticarlos d\u00eda a d\u00eda en nuestra programaci\u00f3n.<\/p>\n<p>Las propiedades del proyecto se dejaban tradicionalmente desprotegidas en JavaScript u ocultas, capturadas en un cierre. Los s\u00edmbolos y los WeakMaps ofrecen otra alternativa.<\/p>\n<p>Tanto Chrome (versi\u00f3n 36) como Firefox (versi\u00f3n 31) soportan WeakMaps. Chrome 36 soporta S\u00edmbolos pero es necesario habilitar JavaScript Experimental en <strong>chrome:\/\/flags\/#enable-javascript-harmony.<\/strong> Firefox soporta s\u00edmbolos de la versi\u00f3n 33.<\/p>\n<h2 id=\"unprotected\"><span class=\"ez-toc-section\" id=\"Escenario-sin-proteccion\"><\/span>Escenario sin protecci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Las instancias de person <\/strong>creadas usando la funci\u00f3n de abajo tendr\u00e1n propiedades almacenadas directamente en ellas.<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">&#13;\nvar Person = (function() {&#13;\nfunction Person(name) {&#13;\nthis.name = name;&#13;\n}&#13;\n&#13;\nPerson.prototype.getName = function() {&#13;\nreturn this.name;&#13;\n};&#13;\n&#13;\nreturn Person;&#13;\n}());&#13;\n&#13;\nvar p = new Person('John');&#13;\nprint('Person 1 name: ' + p.getName());&#13;\ndelete p.name;&#13;\nprint('Person 1 name: ' + p.getName() + ' \u2014 modified outside.');&#13;\n<\/pre>\n<p>Este enfoque tiene la ventaja de que todas las <strong>instancias de la Person<\/strong> son similares y el acceso a las propiedades de esas instancias puede ser optimizado. Pero por otro lado no hay propiedades privadas aqu\u00ed \u2013<em> todas las propiedades del objeto pueden ser modificadas<\/em> por c\u00f3digo externo (en este caso \u2013 borrado).<\/p>\n<p>Varias bibliotecas prefieren prefijar las propiedades que est\u00e1n destinadas a ser privadas con el car\u00e1cter de subrayado (por ejemplo, <strong>_nombre<\/strong>).<\/p>\n<p>Otros<em> \u2013 como TypeScript \u2013<\/em> dependen del compilador para marcar todos los usos ilegales de una propiedad privada.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Propiedades-de-ocultacion-con-cierres\"><\/span>Propiedades de ocultaci\u00f3n con cierres<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Para aislar una propiedad de una modificaci\u00f3n externa se puede utilizar un cierre interno que se cierra sobre la <strong>variable name<\/strong>. Las convenciones de c\u00f3digo de Douglas Crockford para JavaScript recomiendan este patr\u00f3n cuando la privacidad es importante para disuadir a las propiedades de nombres con el prefijo de subrayado para indicar privacidad.<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">&#13;\n&#13;\nvar Person = (function() {&#13;\nfunction Person(name) {&#13;\nthis.getName = function() {&#13;\nreturn name;&#13;\n};&#13;\n}&#13;\n&#13;\nreturn Person;&#13;\n}());&#13;\n&#13;\nvar p = new Person('John');&#13;\nprint('Person 2 name: ' + p.getName());&#13;\ndelete p.name;&#13;\nprint('Person 2 name: ' + p.getName() + ' stays private.');&#13;\n&#13;\n<\/pre>\n<p>El enfoque de cierre tiene la ventaja de la verdadera privacidad, pero el costo es que para cada caso de Person se tiene que crear un nuevo cierre (la funci\u00f3n dentro del constructor de la <strong>Person<\/strong>).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Uso-de-simbolos\"><\/span>Uso de s\u00edmbolos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Con ES6 hay una forma m\u00e1s de almacenar propiedades: S\u00edmbolos.<\/p>\n<p>Los s\u00edmbolos son similares a los nombres privados pero -a diferencia de los nombres privados- no proporcionan verdadera privacidad.<\/p>\n<p>Para ejecutar el ejemplo que ves tu navegador debe soportar:<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">&#13;\nvar Person = (function() {&#13;\nvar nameSymbol = Symbol('name');&#13;\n&#13;\nfunction Person(name) {&#13;\nthis[nameSymbol] = name;&#13;\n}&#13;\n&#13;\nPerson.prototype.getName = function() {&#13;\nreturn this[nameSymbol];&#13;\n};&#13;\n&#13;\nreturn Person;&#13;\n}());&#13;\n&#13;\nvar p = new Person('John');&#13;\nprint('Person 3 name: ' + p.getName());&#13;\ndelete p.name;&#13;\nprint('Person 3 name: ' + p.getName() + ' \u2014 stays private.');&#13;\nprint('Person 3 properties: ' + Object.getOwnPropertyNames(p));&#13;\n<\/pre>\n<p>Los s\u00edmbolos no aumentan el n\u00famero de cierres por cada instancia creada. S\u00f3lo hay un cierre para proteger el s\u00edmbolo.<\/p>\n<p>Los s\u00edmbolos se utilizan para indexar objetos JavaScript. La principal diferencia con otros tipos es que no son convertidos a cadenas y expuestos por <strong>Object.getOwnPropertyNames.<\/strong> S\u00f3lo utilizando el s\u00edmbolo de referencia se pueden fijar y recuperar valores del objeto. Se puede acceder a una lista de s\u00edmbolos asignados para un objeto determinado con la funci\u00f3n <strong>Object.getOwnPropertySymbols.<\/strong><\/p>\n<p>Cada s\u00edmbolo es \u00fanico, incluso si se ha creado con la misma etiqueta.<\/p>\n<p>ES6 Symbols \u2705<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">&#13;\n&#13;\nvar sym1 = Symbol('a');&#13;\nvar sym2 = Symbol('b');&#13;\nvar sym3 = Symbol('a');&#13;\n&#13;\nprint('sym1 === sym1: ' + (sym1 === sym1));&#13;\nprint('sym1 === sym2: ' + (sym1 === sym2));&#13;\nprint('sym1 === sym3: ' + (sym1 === sym3));&#13;\n&#13;\n<\/pre>\n<p>Los s\u00edmbolos tienen las siguientes desventajas:<\/p>\n<ul>\n<li>Mayor complejidad en la gesti\u00f3n de s\u00edmbolos \u2013 en lugar de un simple p.name, primero hay que obtener la referencia del s\u00edmbolo y luego usar <strong>p[nameSymbol].<\/strong><\/li>\n<li>Actualmente s\u00f3lo unos pocos navegadores soportan s\u00edmbolos.<\/li>\n<li>No garantizan una verdadera privacidad, pero pueden utilizarse para separar las propiedades p\u00fablicas de las internas de los objetos. Es similar a c\u00f3mo la mayor\u00eda de los lenguajes orientados a objetos permiten el acceso a propiedades privadas a trav\u00e9s de la API de reflexi\u00f3n.<\/li>\n<\/ul>\n<p>Los s\u00edmbolos privados todav\u00eda se consideran para ECMAScript, pero la implementaci\u00f3n adecuada que nunca filtra los s\u00edmbolos es dif\u00edcil. Los s\u00edmbolos privados ya son utilizados por la especificaci\u00f3n ES6 y se implementan internamente en V8.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Uso-de-WeakMaps\"><\/span>Uso de WeakMaps<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Otro enfoque para almacenar propiedades privadas es WeakMaps.<\/p>\n<p>Una instancia de WeakMap est\u00e1 oculta dentro de un cierre y es indexada por instancias de <strong>person<\/strong>. Los valores del mapa son objetos que contienen datos privados.<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">&#13;\n&#13;\nvar Person = (function() {&#13;\nvar private = new WeakMap();&#13;\n&#13;\nfunction Person(name) {&#13;\nvar privateProperties = {&#13;\nname: name&#13;\n};&#13;\nprivate.set(this, privateProperties);&#13;\n}&#13;\n&#13;\nPerson.prototype.getName = function() {&#13;\nreturn private.get(this).name;&#13;\n};&#13;\n&#13;\nreturn Person;&#13;\n}());&#13;\n&#13;\nvar p = new Person('John');&#13;\nprint('Person 4 name: ' + p.getName());&#13;\ndelete p.name;&#13;\nprint('Person 4 name: ' + p.getName() + ' \u2014 stays private.');&#13;\nprint('Person 4 properties: ' + Object.getOwnPropertyNames(p));&#13;\n&#13;\n<\/pre>\n<p>Es posible utilizar Map en lugar de un WeakMap o incluso un par de arrays para imitar esta soluci\u00f3n. Pero el uso de WeakMap tiene una ventaja significativa \u2013 permite que las instancias de Person sean recolectadas como basura.<\/p>\n<p>Un Mapa o una matriz sostiene objetos que contienen con fuerza. <strong>Person<\/strong> es un cierre que captura la variable privada \u2013 que es tambi\u00e9n una referencia fuerte. El recolector de basura puede recoger un objeto si s\u00f3lo hay referencias d\u00e9biles a \u00e9l (o si no hay ninguna referencia en absoluto). Debido a las dos fuertes referencias, siempre y cuando la funci\u00f3n <strong>Person<\/strong> sea alcanzable desde las ra\u00edces de la CG, entonces cada instancia de Person jam\u00e1s creada es alcanzable y por lo tanto no puede ser recolectada como basura.<\/p>\n<p>El WeakMap mantiene las claves d\u00e9bilmente y eso hace que tanto la instancia de Person como sus datos privados sean elegibles para la recolecci\u00f3n de basura cuando un objeto <strong>Person<\/strong> ya no es referenciado por el resto de la aplicaci\u00f3n.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Acceso-a-propiedades-de-otras-instancias\"><\/span>Acceso a propiedades de otras instancias<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Todas las soluciones presentadas (con excepci\u00f3n de los cierres) tienen una caracter\u00edstica interesante. Las instancias pueden acceder a propiedades privadas de otras instancias.<\/p>\n<p>El siguiente ejemplo clasifica las instancias de <strong>Person<\/strong> por sus nombres. La funci\u00f3n <strong>compareTo<\/strong> utiliza los datos privados de esta y otras instancias.<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">&#13;\n&#13;\nvar Person = (function() {&#13;\nvar private = new WeakMap();&#13;\n&#13;\nfunction Person(name) {&#13;\nvar privateProperties = {&#13;\nname: name&#13;\n};&#13;\nprivate.set(this, privateProperties);&#13;\n}&#13;\n&#13;\nPerson.prototype.compareTo = function(other) {&#13;\nvar thisName = private.get(this).name;&#13;\nvar otherName = private.get(other).name;&#13;\nreturn thisName.localeCompare(otherName);&#13;\n};&#13;\n&#13;\nPerson.prototype.toString = function() {&#13;\nreturn private.get(this).name;&#13;\n};&#13;\n&#13;\nreturn Person;&#13;\n}());&#13;\n&#13;\nvar people = [&#13;\nnew Person('John'),&#13;\nnew Person('Jane'),&#13;\nnew Person('Jim')&#13;\n];&#13;\n&#13;\npeople.sort(function(first, second) {&#13;\nreturn first.compareTo(second);&#13;\n});&#13;\n&#13;\nprint('Sorted people: ' + people.join(', '));&#13;\n&#13;\n<\/pre>\n<p>El mismo ejemplo escrito en Java:<\/p>\n<pre data-enlighter-language=\"php\" class=\"EnlighterJSRAW\">&#13;\n&#13;\nimport java.util.Arrays;&#13;\n&#13;\nclass Person implements Comparable&lt;Person&gt; {&#13;\nprivate String name;&#13;\n&#13;\npublic Person(String name) {&#13;\nthis.name = name;&#13;\n}&#13;\n&#13;\npublic int compareTo(Person other) {&#13;\nreturn this.name.compareTo(other.name);&#13;\n}&#13;\n&#13;\npublic String toString() {&#13;\nreturn this.name;&#13;\n}&#13;\n}&#13;\n&#13;\npublic class Main {&#13;\npublic static final void main(String... args) {&#13;\nPerson[] people = new Person[] {&#13;\nnew Person(\"John\"),&#13;\nnew Person(\"Jane\"),&#13;\nnew Person(\"Jim\")&#13;\n};&#13;\n&#13;\nArrays.sort(people);&#13;\n&#13;\nSystem.out.print(\"Sorted people: \" + Arrays.toString(people));&#13;\n}&#13;\n}&#13;\n&#13;\n<\/pre>\n<p>El m\u00e9todo <strong>Person::compareTo<\/strong> utiliza el nombre de campo privado de esta instancia y de otro objeto.<\/p>\n<p>Felicidades por haber finalizado este nuevo tutorial, recuerda que en tu web <strong>escuelaJavaScript.com<\/strong> tendr\u00e1s acceso a los mejores cursos de lenguaje de programaci\u00f3n JavaScript.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>La s\u00e9curit\u00e9 est une question qui ne doit pas \u00eatre prise \u00e0 la l\u00e9g\u00e8re. Les programmeurs novices peuvent ignorer certaines de ces techniques de s\u00e9curit\u00e9 JavaScript, et m\u00eame une qui\u2026<\/p>","protected":false},"author":1,"featured_media":95610,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1374],"tags":[],"class_list":["post-95609","post","type-post","status-publish","format-standard","has-post-thumbnail","category-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Privacidad de atributos en Javascript - R Marketing Digital<\/title>\n<meta name=\"description\" content=\"La seguridad es un tema que no debe ser tomado a la ligera. Quiz\u00e1s los programadores novatos desconozcan algunas de estas t\u00e9cnica de seguridad en\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Privacidad de atributos en Javascript\" \/>\n<meta property=\"og:description\" content=\"La seguridad es un tema que no debe ser tomado a la ligera. Quiz\u00e1s los programadores novatos desconozcan algunas de estas t\u00e9cnica de seguridad en\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"R Marketing Digital\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-13T21:44:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/poo_4-3776640.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"365\" \/>\n\t<meta property=\"og:image:height\" content=\"273\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"R Marketing Digital\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/\"},\"author\":{\"name\":\"R Marketing Digital\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"headline\":\"Privacidad de atributos en Javascript\",\"datePublished\":\"2022-09-13T21:44:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/\"},\"wordCount\":945,\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/poo_4-3776640.jpg\",\"articleSection\":[\"Javascript\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/\",\"name\":\"Privacidad de atributos en Javascript - R Marketing Digital\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/poo_4-3776640.jpg\",\"datePublished\":\"2022-09-13T21:44:54+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\"},\"description\":\"La seguridad es un tema que no debe ser tomado a la ligera. Quiz\u00e1s los programadores novatos desconozcan algunas de estas t\u00e9cnica de seguridad en\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/javascript\\\/privacidad-de-atributos-en-javascript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/poo_4-3776640.jpg\",\"contentUrl\":\"https:\\\/\\\/rmarketingdigital.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/poo_4-3776640.jpg\",\"width\":365,\"height\":273,\"caption\":\"poo_4-3776640-5332582-jpg\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#website\",\"url\":\"https:\\\/\\\/rmarketingdigital.com\\\/\",\"name\":\"R Marketing Digital\",\"description\":\"Agencia SEO | Publicidad redes sociales | Community Management\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rmarketingdigital.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/rmarketingdigital.com\\\/#\\\/schema\\\/person\\\/7c0d9782b2977b840b3740f00c69a73e\",\"name\":\"R Marketing Digital\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g\",\"caption\":\"R Marketing Digital\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Attribuer la confidentialit\u00e9 en Javascript - R Marketing Digital","description":"La s\u00e9curit\u00e9 est un probl\u00e8me qui ne doit pas \u00eatre pris \u00e0 la l\u00e9g\u00e8re. Les programmeurs novices peuvent ne pas \u00eatre familiaris\u00e9s avec certaines de ces techniques de s\u00e9curit\u00e9","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/","og_locale":"fr_FR","og_type":"article","og_title":"Privacidad de atributos en Javascript","og_description":"La seguridad es un tema que no debe ser tomado a la ligera. Quiz\u00e1s los programadores novatos desconozcan algunas de estas t\u00e9cnica de seguridad en","og_url":"https:\/\/rmarketingdigital.com\/fr\/javascript\/privacidad-de-atributos-en-javascript\/","og_site_name":"R Marketing Digital","article_published_time":"2022-09-13T21:44:54+00:00","og_image":[{"width":365,"height":273,"url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/poo_4-3776640.jpg","type":"image\/jpeg"}],"author":"R Marketing Digital","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/#article","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/"},"author":{"name":"R Marketing Digital","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"headline":"Privacidad de atributos en Javascript","datePublished":"2022-09-13T21:44:54+00:00","mainEntityOfPage":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/"},"wordCount":945,"image":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/poo_4-3776640.jpg","articleSection":["Javascript"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/","url":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/","name":"Attribuer la confidentialit\u00e9 en Javascript - R Marketing Digital","isPartOf":{"@id":"https:\/\/rmarketingdigital.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/#primaryimage"},"image":{"@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/poo_4-3776640.jpg","datePublished":"2022-09-13T21:44:54+00:00","author":{"@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e"},"description":"La s\u00e9curit\u00e9 est un probl\u00e8me qui ne doit pas \u00eatre pris \u00e0 la l\u00e9g\u00e8re. Les programmeurs novices peuvent ne pas \u00eatre familiaris\u00e9s avec certaines de ces techniques de s\u00e9curit\u00e9","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/rmarketingdigital.com\/javascript\/privacidad-de-atributos-en-javascript\/#primaryimage","url":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/poo_4-3776640.jpg","contentUrl":"https:\/\/rmarketingdigital.com\/wp-content\/uploads\/2020\/12\/poo_4-3776640.jpg","width":365,"height":273,"caption":"poo_4-3776640-5332582-jpg"},{"@type":"WebSite","@id":"https:\/\/rmarketingdigital.com\/#website","url":"https:\/\/rmarketingdigital.com\/","name":"Marketing num\u00e9rique","description":"Agence de r\u00e9f\u00e9rencement | Publicit\u00e9 sur les r\u00e9seaux sociaux | Gestion de communaut\u00e9","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rmarketingdigital.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/rmarketingdigital.com\/#\/schema\/person\/7c0d9782b2977b840b3740f00c69a73e","name":"Marketing num\u00e9rique","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c5599c203e0120b8ccbff4666af86f35f9b3dcad468a8bc6295313a3964a80be?s=96&d=mm&r=g","caption":"R Marketing Digital"}}]}},"_links":{"self":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/posts\/95609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/comments?post=95609"}],"version-history":[{"count":0,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/posts\/95609\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/media\/95610"}],"wp:attachment":[{"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/media?parent=95609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/categories?post=95609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rmarketingdigital.com\/fr\/wp-json\/wp\/v2\/tags?post=95609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}