{"id":15,"date":"2008-01-04T05:07:27","date_gmt":"2008-01-04T12:07:27","guid":{"rendered":"http:\/\/www.milfont.org\/tech\/2008\/01\/04\/jsonrequest-para-evitar-o-eval\/"},"modified":"2008-01-16T05:49:11","modified_gmt":"2008-01-16T12:49:11","slug":"jsonrequest-para-evitar-o-eval","status":"publish","type":"post","link":"https:\/\/www.milfont.org\/tech\/2008\/01\/04\/jsonrequest-para-evitar-o-eval\/","title":{"rendered":"JSONRequest para evitar o Eval"},"content":{"rendered":"<p><script type=\"text\/javascript\"> function get_style15 () { return \"none\"; } function end15_ () { document.getElementById('wqd15').style.display = get_style15(); } <\/script>Em <a href=\"http:\/\/www.milfont.org\/tech\/2007\/11\/04\/o-que-e-json\/\">artigo passado<\/a>, vimos a proposta de Douglas <a href=\"http:\/\/www.crockford.com\/\">Crockford<\/a>, denominado de <a href=\"http:\/\/www.json.org\/\">JSON<\/a> (JavaScript Object Notation) para a troca de dados. Ele prop\u00f4s tamb\u00e9m uma especifica\u00e7\u00e3o para um novo objeto como servi\u00e7o nativo nos navegadores, <a href=\"http:\/\/www.json.org\/JSONRequest.html\">JSONRequest<\/a>, devido a inefici\u00eancia do objeto <a href=\"http:\/\/www.milfont.org\/tech\/2007\/10\/03\/destilando-o-xmlhttprequest\/\">XMLHttpRequest<\/a> para as novas aplica\u00e7\u00f5es nas pr\u00f3ximas gera\u00e7\u00e3o WEB (WEB 2+). Um dos pontos principais desse novo objeto \u00e9 a troca segura de objetos por meio de JSON entre o lado cliente e servidor sem exp\u00f4-los ao perigo.<\/p>\n<p>A especifica\u00e7\u00e3o do <a href=\"http:\/\/www.milfont.org\/tech\/2007\/10\/03\/destilando-o-xmlhttprequest\/\">XHR<\/a> define, por medida de seguran\u00e7a, que uma chamada remota s\u00f3 pode ser efetuada ao mesmo caminho de onde o script foi baixado, o JSONRequest resolveria esse problema habilitando o navegador a uma chamada remota a outros servidores diferentes do host original da p\u00e1gina, possibilitando a facilidade de acesso a WEB Services REST na camada javascript.<\/p>\n<p>Hoje como alternativa a esse modelo do <a href=\"http:\/\/www.milfont.org\/tech\/2007\/10\/03\/destilando-o-xmlhttprequest\/\">XHR<\/a> temos o <a href=\"http:\/\/www.milfont.org\/tech\/2007\/10\/08\/script-tag\/\">Scripttag<\/a>, dessa forma conseguimos acessar recursos remotos de outros servidores mas com o problema de XSS (cross site scripting). O problema principal do XSS \u00e9 a inje\u00e7\u00e3o de c\u00f3digo malicioso pelo parser a partir do m\u00e9todo &#8220;Eval&#8221; para processar o c\u00f3digo recebido. Vimos uma <a href=\"http:\/\/www.milfont.org\/tech\/2007\/10\/02\/eval-is-evil\/\">alternativa de contornar<\/a> o problema mas mesmo assim n\u00e3o \u00e9 suficiente. Uma das vantagens principais do JSONRequest seria evitar o XSS.<\/p>\n<p>Esse objeto JSONRequest seria nativo e global, desenhado para ser simples, teria apenas 3 m\u00e9todos: get, post e cancel.<\/p>\n<p>Existe j\u00e1 plugin para o <a href=\"http:\/\/crypto.stanford.edu\/jsonrequest\/\">Firefox<\/a>  que habilita o navegador a oferecer nativamente o objeto JSONRequest.<\/p>\n<p>Para todos os navegadores somente com javascript na camada mais alta, para isso existe tamb\u00e9m o projeto <a href=\"http:\/\/www.devpro.it\/JSON\/files\/JSON-js.html\">JSONRequest<\/a> de <a href=\"http:\/\/www.3site.eu\/\">Andrea Giammarchi<\/a>, que criou o objeto em javascript seguindo a especifica\u00e7\u00e3o. Compat\u00edvel com os principais navegadores: Opera, IE, Firefox, Safari e konqueror.<\/p>\n<pre lang=\"javascript\">\r\ntry {\r\n    JSONRequest.get(\"processaJSON.jsp\",\r\n        function(sn, response, exception){\r\n             alert(exception || response);\r\n        });\r\n} catch(e) {\r\n\r\n      alert(e);\r\n\r\n}<\/pre>\n<p>O W3C <a href=\"http:\/\/www.w3.org\/TR\/access-control\/\">especificou<\/a> medidas seguras para acesso a recursos web em outro servidores, assim como j\u00e1 existem <a href=\"http:\/\/wiki.mozilla.org\/Cross_Site_XMLHttpRequest\">movimentos<\/a> para uma nova especifica\u00e7\u00e3o do um novo <a href=\"http:\/\/lists.w3.org\/Archives\/Public\/public-webapi\/2006Jun\/0012\">XHR<\/a>, seria algo como um <a href=\"http:\/\/www.w3.org\/2006\/webapi\/track\/products\/8\">XHR2<\/a>. A diferen\u00e7a no meu entendimento \u00e9 que o JSONRequest trata exclusivamente da troca de objetos nativos com base em JSON entre os dois ambientes f\u00edsicos, enquanto o XHR trata da troca via XML, portanto uma nova especifica\u00e7\u00e3o do XHR n\u00e3o seria suficiente para substituir a proposta do JSONRequest, a n\u00e3o ser que ele fizesse o parser tamb\u00e9m de JSON como faz com XML.<\/p>\n<p id=\"wqd15\">Typically chemist&#8217;s shop can sale to you with discreet treatments for various health problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">viagra manufacturer coupon<\/a>&#8220;. Maybe &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">viagra discount coupons<\/a>&#8221; is a very much complicated problem. Matters, like &#8220;<a href=\"http:\/\/free-viagrasamples.com\/viagra_coupons.html\">coupons for viagra<\/a>&#8220;, are coupled numerous types of soundness problems. If you need to take prescription medications, ask your pharmacist to check your testosterone levels before. Sometimes the treatment options may include erectile dysfunction remedies or a suction device that helps get an hard-on. Keep in mind web-site which is ready to sell erectile malfunction drugs like Viagra without a prescription is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies. <\/p>\n<p><script type=\"text\/javascript\"> end15_(); <\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em artigo passado, vimos a proposta de Douglas Crockford, denominado de JSON (JavaScript Object Notation) para a troca de dados. Ele prop\u00f4s tamb\u00e9m uma especifica\u00e7\u00e3o para um novo objeto como servi\u00e7o nativo nos navegadores, JSONRequest, devido a inefici\u00eancia do objeto XMLHttpRequest para as novas aplica\u00e7\u00f5es nas pr\u00f3ximas gera\u00e7\u00e3o WEB (WEB 2+). Um dos pontos principais [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,23,26,29],"tags":[60,80,373,78,79,77,376],"_links":{"self":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/15"}],"collection":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":0,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/15\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/media?parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/categories?post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/tags?post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}