Impede que usuários enviem mensagens de "owner" nos tópicos e chat.
Proteção contra owner e XSS nas mensagens e chat TUTORIAIS, DICAS E ASTÚCIAS |
Instalação do código JavascriptAs páginas javascript ativas em seu fórum possibilita inserir scripts e jQuery para personalizar seu fórum, contudo é importante saber que qualquer script encontrado na internet acabam por não surgir efeito nos fóruns.
Painel administrativo Módulos HTML e Javascript Gestão dos códigos Javascript Criar um novo javascript |
| Habilitar o gerenciamento dos códigos Javascript - Permite ativar os scripts personalizados criados pelo administrador no fórum. Este recurso não tem qualquer impacto nos scripts nativos do fórum. |
| Tìtulo - Cria um título para identificar o script a ser modificado mais tarde na lista de scripts do fórum. |
| Investimento - Define o local em específico que este script será executado. Você pode investir o script para vários locais no fórum (Todas as páginas) ou pode definir para certos locais disponíveis na tela de investimento. Neste caso, estaremos investindo em todas as páginas. |
| Código Javascript - Espaço destinado a receber o script que será ativado pelo administrador. Antes de aplicar o script ao fórum, é importante revisá-lo para ter certeza de seu funcionamento. |
Após isso, adicione o código:- Código:
(function($) { 'use strict'; /** * Configuration */ var config = { /** * Attributes to keep */ attributes: [ 'style', 'class', ], /** * Styles to reset */ style: [ 'position', 'margin', 'transform', 'top', 'right', 'bottom', 'left', ], }; /** * Elements queries by forum version */ var query = { phpbb2: { postbody: '.postbody > div', }, phpbb3: { postbody: '.content > div', }, punbb: { postbody: '.entry-content > div > div', }, invision: { postbody: '.post-entry > div', }, modernbb: { postbody: '.content > div', }, mobile: { postbody: '.content > div', }, mobile_modern: { postbody: '.post-content', }, }; /** * Hide posts to avoid pre-render XSS */ var hide = []; $.each(query, function(version, data) { hide.push(data.postbody); }); hide = $.grep(hide, function(item, pos) { return $.inArray(item, hide) === pos; }); var $hide = $('<style>', { html: hide.join(',') + ' { display: none; }' }) .appendTo('head') ; /** * Clear function */ var clear = function(elem) { var $this = $(elem); var attributes = $.map(elem.attributes, function(item) { return item.name; }); $.each(attributes, function() { if (config.attributes.indexOf(this) === -1) { elem.removeAttribute(this); } }); $.each(config.style, function() { $this.css(this, ''); }); }; /** * Clear posts */ $(function() { /** * Forum version detection */ var version; $.each({ phpbb2: '.bodylinewidth', phpbb3: '#phpbb', punbb: '.pun', invision: '#ipbwrapper', modernbb: '#modernbb', mobile: '#mpage-body', mobile_modern: '#mpage-body-modern', }, function(name, selector) { if ($(selector).length) { version = name; return false; } }); if (!version) { return $hide.remove(); } $(query[version].postbody).find('table, tr, td').each(function() { clear(this); }); $hide.remove(); }); /** * Chatbox override */ var insertChatBoxNew = window.insertChatBoxNew; window.insertChatBox = window.insertChatBoxNew = function() { insertChatBoxNew.apply(this, arguments); var chatbox = $('#frame_chatbox').get(0); if (chatbox.readyState === 'complete') { return run(event.target.contentWindow); } var onload = chatbox.onload; chatbox.onload = function(event) { if (onload) { onload.apply(this, arguments); } run(event.target.contentWindow); }; }; var run = function(context) { /** * Clear chatbox */ var refresh = context.Chatbox.prototype.refresh; context.Chatbox.prototype.refresh = function(data) { if (!data.messages || !data.messages.length) { return refresh.call(this, data); } $.each(data.messages, function() { this.msg = $('<div>', { html: this.msg }) .find('table, tr, td') .each(function() { clear(this); }) .end() .html() ; }); refresh.call(this, data); }; /** * Chatbox initial refresh */ context.chatbox.refresh(context.chatbox); }; }(jQuery));
Após a instalação, o código já estará a resultar. O código irá blindar seu fórum contra ataques XSS.
|