antisamy

antisamy https://blog.csdn.net/zhujq_icode/article/details/79154063 策略文件 antisamy-slashdot.xml Slashdot (http://www.slashdot.org/)是一个提供技术新闻的网站,它允许用户用有限的HTML是一个提供技术新闻的网站,它允许用户用有限的HTML)格式的内容匿名回帖。 Slashdot不仅仅是目前同类中最酷的网站之一,而且同时也曾是最容易被成功攻击的网站之一。更不幸的是,导致大部分用户遭受攻击的原由是臭名昭着的goatse.cx 图片(请你不要刻意去看)。 Slashdot的安全策略非常严格: 用户只能提交下列的html标签: **, , _, , < blockquote>,并且还不支持CSS.因此我们创建了这样的策略文件来实现类似的功能。它允许所有文本格式的标签来直接修饰字体、颜色或者强调作用。 antisamy-ebay.xml 众所周知,eBay (http://www.ebay.com/)是当下最流行的在线拍卖网站之一。它是一个面向公众的站点,因此它允许任何人发布一系列富HTML的内容。我们对eBay成为一些复杂XSS攻击的目标,并对攻击者充满吸引力丝毫不感到奇怪。由于eBay允许输入的内容列表包含了比Slashdot是当下最流行的在线拍卖网站之一。它是一个面向公众的站点,因此它允许任何人发布一系列富HTML的内容。我们对eBay成为一些复杂XSS攻击的目标,并对攻击者充满吸引力丝毫不感到奇怪。由于eBay允许输入的内容列表包含了比Slashdot)更多的富文本内容,所以它的受攻击面也要大得多。 antisamy-myspace.xml MySpace (http://www.myspace.com/)是最流行的一个社交网站之一。用户允许提交几乎所有的他们想用的HTML和CSS,只要不包含JavaScript。MySpace现在用一个黑名单来验证用户输入的HTML,这就是为什么它曾受到Samy蠕虫攻击(http://namb.la/)的原因。Samy蠕虫攻击利用了一个本应该列入黑名单的单词(eval)来进行组合碎片攻击的,其实这也是AntiSamy是最流行的一个社交网站之一。用户允许提交几乎所有的他们想用的HTML和CSS,只要不包含JavaScript。MySpace现在用一个黑名单来验证用户输入的HTML,这就是为什么它曾受到Samy蠕虫攻击(http://namb.la/)的原因。Samy蠕虫攻击利用了一个本应该列入黑名单的单词(eval)来进行组合碎片攻击的,其实这也是AntiSamy)立项的原因。 antisamy-anythinggoes.xml 如果你想允许所有有效的HTML和CSS元素输入 (但能拒绝JavaScript或跟CSS相关的网络钓鱼攻击) ,你可以使用这个策略文件。其实即使MySpace也没有这么疯狂。然而,它确实提供了一个很好的参考,因为它包含了对于每个元素的基本规则,所以你在裁剪其它策略文件的时候可以把它作为一个知识库。 antisamy-tinymce.xml 只允许文本格式通过,相对较安全 antisamy.xml 默认规则,允许大部分HTML通过 作者: flying_pig1989 来源: CSDN 原文: https://blog.csdn.net/zhujq_icode/article/details/79154063 版权声明: 本文为博主原创文章,转载请附上博文链接!

2018-12-14 · 1 min · 38 words · -

XSS, Cross Site Scripting, CSRF, Cross-site request forgery, CORS

CORS, XSS, Cross Site Scripting, CSRF, Cross-site request forgery CORS, Cross-Origin Resource Sharing, 跨源资源共享, 跨域资源共享 CORS (Cross-Origin Resource Sharing,跨源资源共享) 是一种基于 HTTP 头的机制,允许服务器指示浏览器应该允许哪些源(域、协议或端口)来访问其资源。 核心概念 同源策略 (Same-Origin Policy) 同源策略是浏览器最核心的安全机制之一,用于隔离潜在的恶意文档,防止不同源的网页之间互相干扰。 默认情况下, 网页只能请求与自身同源的资源。 什么是"同源": 两个 URL 只有在以下三个部分完全相同时才被认为是同源的: 协议 (Protocol): http/https 域名 (Domain): 包括子域名 端口 (Port): 默认端口可省略 假设当前页面是: http://www.example.com:80/dir/page.html http://www.example.com/dir2/other.html ✅ 同源 协议、域名、端口相同 http://www.example.com:80/dir/inner/page.html ✅ 同源 80 是 http 默认端口 https://www.example.com/page.html ❌ 不同源 协议不同 (https vs http) http://www.example.com:8080/page.html ❌ 不同源 端口不同 (8080 vs 80) http://api.example.com/page.html ❌ 不同源 域名不同 (子域名不同) http://example.com/page.html ❌ 不同源 域名不同 (缺少 www) ...

2018-12-13 · 3 min · 474 words · -

nuc

nuc 英特尔 「NUC」 (Next Unit of Computing) nuc5i5ryh CPU: Intel® Core™ i5-5250U Processor (3M Cache, up to 2.70 GHz) 内存: DDR3L-1333/1600 1.35V SO-DIMM nuc7i5bnk Intel® Core™ i5-7260U Processor (4M Cache, up to 3.40 GHz) nuc8i5bek Intel® Core™ i5-8259U Processor (6M Cache, up to 3.80 GHz)

2018-12-11 · 1 min · 45 words · -

archlinux UEFI

archlinux UEFI # boot with iso-usb ls /sys/firmware/efi dmesg |grep sdx lsblk gdisk /dev/sdx o y n EF00 n w y /dev/sdx1 512M EFI /dev/sdx2 xxxxM ext4 mkfs.vfat /dev/sdx1 mkfs.ext4 /dev/sdx2 mount /dev/sdx2 /mnt mkdir /mnt/boot mount/dev/sdx1 /mnt/boot pacstrap /mnt arch-chroot /mnt bootctl install cd /boot/loader pacman -S vim vim loader.conf default arch timeout 4 cd entries vim arch.conf title Archlinux linux /vmlinuz-linux initrd /initramfs-linux.img options root=PARTUUID=xxx rw r !blkid reboot

2018-12-08 · 1 min · 71 words · -

docker install

docker install ubuntu # apt 从仓库里安装, 落后两个小版本, 也算比较新了, 建议从官方源安装 sudo apt install docker.io curl, 配置官方源, 一般会高几个小版本 https://docs.docker.com/engine/install/ubuntu/ # 删掉旧版本的包, 有冲突的包 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo docker run hello-world https://docs.docker.com/install/linux/docker-ce/centos/ ...

2018-11-28 · 1 min · 194 words · -

raspberry pi openvpn docker

raspberry pi openvpn docker export OVPN_DATA="ovpn-data" docker volume create --name $OVPN_DATA # volume默认位置: /var/lib/docker/volumes/ovpn-data # gen config docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm mjenz/rpi-openvpn ovpn_genconfig -u udp://xxx.wiloon.com # init pki docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it mjenz/rpi-openvpn ovpn_initpki # start server docker run -v $OVPN_DATA:/etc/openvpn -d -p 192.168.100.230:1194:1194/udp --cap-add=NET_ADMIN --name openvpn --restart=always mjenz/rpi-openvpn #Generate a client certificate docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it mjenz/rpi-openvpn easyrsa build-client-full client0 nopass # Retrieve the client configuration with embedded certificates docker run -v $OVPN_DATA:/etc/openvpn --rm mjenz/rpi-openvpn ovpn_getclient client0 > client0.ovpn docker run -v $OVPN_DATA:/etc/openvpn -p 1194:1194/udp --privileged -e DEBUG=1 mjenz/rpi-openvpn https://github.com/mje-nz/rpi-docker-openvpn ...

2018-11-27 · 1 min · 101 words · -

zentao

zentao https://github.com/idoop/zentao https://github.com/iboxpay/ldap 下载iboxpay/ldap 扩展, 作为插件安装。此插件会安装三个文件 /opt/zentao/lib/ldap/ldap.class.php # ldap 配置 /opt/zentao/module/user/ext/config/ldap.php /opt/zentao/module/user/ext/model/ldap.php 参照 https://blog.csdn.net/BigBoySunshine/article/details/80502068 修改 /opt/zentao/module/user/ext/config/ldap.php $config->ldap->ldap_server $config->ldap->ldap_root_dn $config->ldap->ldap_bind_dn $config->ldap->ldap_bind_passwd /opt/zentao/lib/ldap/ldap.class.php if ( @ldap_bind( $t_ds, "{$t_info[$i]['dn']}", $p_password ) ) { /opt/zentao/module/user/js/login.js if(password.length != 32 && typeof(md5) == 'function') $('input:password').val(password); 禅道 docker + ldap插件 checkout https://github.com/idoop/zentao 修改docker-compose.yaml 修改MySQL端口 修改volumns路径 download ldap as zip https://github.com/iboxpay/ldap 参照https://github.com/iboxpay/ldap 的readme安装插件

2018-11-26 · 1 min · 55 words · -

test for a specific port from Linux or Unix command line

test for a specific port from Linux or Unix command line https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/ # check for tcp port ## ## need bash shell echo >/dev/tcp/{host}/{port} (echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "open" || echo "close" (echo >/dev/udp/{host}/{port}) &>/dev/null && echo "open" || echo "close" (echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Open 22" || echo "Close 22" (echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Open 443" || echo "Close 443"

2018-11-26 · 1 min · 64 words · -

PD 充电协议

PD 充电协议 thinkpad的 PD 充电协议有可能和通用的 协议 不同, 某些情况下不能握手充电. 紫米65W充电器使用了USB PD中的PPS规范,而部分笔记本电脑型号较早,未有支持PPS协议规范,因为使用紫米65W充电器可能会出现充电协议“握手”失败,进而导致无法正常充电 thinkpad x1 carbon Power Adapter** [1][2] • 45W USB-C® (2-pin) AC adapter, supports PD 3.0, 100-240V, 50-60Hz • 45W USB-C (3-pin) AC adapter, supports PD 3.0, 100-240V, 50-60Hz • 65W USB-C (2-pin) AC adapter, supports PD 3.0, 100-240V, 50-60Hz • 65W USB-C slim (2-pin) AC adapter, supports PD 3.0, 100-240V, 50-60Hz • 65W USB-C slim (3-pin) AC adapter, supports PD 3.0, 100-240V, 50-60Hz

2018-11-25 · 1 min · 73 words · -

raspberry pi docker

raspberry pi docker curl -sSL https://get.docker.com | sh https://www.raspberrypi.org/blog/docker-comes-to-raspberry-pi/

2018-11-24 · 1 min · 9 words · -

helm

helm Helm 是 Kubernetes 的包管理器 # archlinux pacman -S helm # curl curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh

2018-11-24 · 1 min · 21 words · -

iptables nat

iptables nat iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE nat 表需要的三个链: PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT; POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。 OUTPUT:定义对本地产生的数据包的目的NAT规则。 需要用到的几个动作选项: (真实环境中用大写) redirect 将数据包重定向到另一台主机的某个端口,通常用实现透明代理和对外开放内网某些服务。 snat 源地址转换,改变数据包的源地址 dnat 目的地址转换,改变数据包的目的地址 masquerade IP伪装,只适用于ADSL等动态拨号上网的IP伪装,如果主机IP是静态分配的,就用snat ip 包大致的流向 DNAT, podman nat表prerouting链 - nat替换目标地址 路由判断 filter表forward链 nat表postrouting链 accept 路由判断, 流入虚拟网卡 cni-podman0 https://www.cnblogs.com/highstar/p/3256813.html

2018-11-22 · 1 min · 52 words · -

the log

the log http://www.cnblogs.com/foreach-break/p/notes_about_distributed_system_and_The_log.html Log是如下系统的核心: 分布式图数据库 分布式搜索引擎 Hadoop 第一代和第二代K-V数据库 Log可能跟计算机的历史一样长,并且是分布式数据系统和实时计算系统的核心。 Log的名字很多: Commit log Transaction log Write-ahead log

2018-11-19 · 1 min · 16 words · -

protocol buffers, protobuf

protocol buffers, protobuf install protoc # archlinux 可以从仓库直接安装 pacman -S protobuf # 其它发行版, 比如 ubuntu 可以下载二进制包 解压即可. https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip # set protoc to PATH protoc -help windows download protoc https://developers.google.com/protocol-buffers/docs/downloads define message format in a .proto file syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 results_per_page = 3; } syntax = "proto3"; package package0; option java_package = "com.wiloon.test.protobuf.package0"; message Msg0 { // comments0 string foo = 1; ObjType enum0 = 2; uint64 timestamp = 5; int32 type = 6; //类型 enum ObjType { type0 = 0; type1 = 1; } } generate java/golang code export SRC_DIR=/pathToSrcDir export DST_DIR=$SRC_DIR golang # 安装 protoc-gen-go # install protocol buffers plugin # go: module github.com/golang/protobuf is deprecated: Use the "google.golang.org/protobuf" module instead. # 废弃,deprecated go get -u github.com/golang/protobuf/protoc-gen-go # 建议用这个 go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26 # 或 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest # generate golang code protoc -I=$SRC_DIR --go_out=$DST_DIR $SRC_DIR/proto0.proto protoc --proto_path=$SRC_DIR --go_out=$DST_DIR --go_opt=paths=source_relative $SRC_DIR/foo.proto # -I, --proto_path: .proto 文件目录 # --go_out: 输出目录 java Java 工程建议使用下面的 protobuf-maven-plugin 方式 ...

2018-11-19 · 2 min · 268 words · -

consumer group

consumer group https://www.cnblogs.com/huxi2b/p/6223228.html

2018-11-16 · 1 min · 3 words · -

java 纳秒

java 纳秒 http://hold-on.iteye.com/blog/1943436 前段时间项目中需要 统计接口连接时间,考虑到连接时间一般都是零点几毫秒级别的,为了拿到更精确地数值,没有使用System.currentTimeMillis(),而是贸然地使用System.nanoTime()来统计时间,后来分析服务器上的数据,发现 竟然有10-15%的数据数值竟然超过了 10的13次方。 原因: System.currentTimeMillis() 起始时间是基于 1970.1.1 0:00:00 这个确定的时间的,而System.nanoTime()是基于cpu核心的时钟周期来计时,它的开始时间是不确定的。 (有篇文章说是更加cpu核心的启动时间开始计算的) 但是在多核处理器上,由于每个核心的开始时间不确定,但是在多核处理器上, Java代码 收藏代码 long start = System.nanoTime(); String ip = Utilities.getIpByUrl(url); long cost = System.nanoTime() - start; 这段代码有可能会运行在两个不同的cpu核心上,从而导致得到的结果完全不符逻辑。 Returns the current timestamp of the most precise timer available on the local system, in nanoseconds. Equivalent to Linux’s CLOCK_MONOTONIC. This timestamp should only be used to measure a duration by comparing it against another timestamp from the same process on the same device. Values returned by this method do not have a defined correspondence to wall clock times; the zero value is typically whenever the device last booted. Use currentTimeMillis() if you want to know what time it is.

2018-11-13 · 1 min · 112 words · -

base64, base64 URL, base16, base32

Base64 base64是一种将二进制的01序列转化成ASCII字符的编码方法。编码后的文本或者二进制消息, 就可以运用SMTP等只支持ASCII字符的协议传送了. Base64 一般被认为会平均增加 33% 的报文长度, 而且经过编码的消息对于人类来说是不可读的。 Base64是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2 的 6 次方等于 64, 所以每 6 个比特为一个单元, 对应某个可打印字符。三个字节有 24 个比特, 对应于 4 个 base64 单元, 即 3 个字节需要用 4 个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9, 这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法, 和之后binhex的版本使用不同的64字符集来代表6个二进制数字, 但是它们不叫Base64. Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括 MIME 的 email, email via MIME, 在XML中存储复杂数据. linux 命令行 base64 编码/解码, base64 encode/decode # encode base64 sample.txt > encodedData.txt cat encodedData.txt # decode echo eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9 |base64 -d 标准 base64, StdEncoding A-Z, a-z, 0-9, /, +, = (pad/填充) Base64 URL A-Z, a-z, 0-9, _, - Base64URL 采用了和 Base64 一样的算法作为主要标准,在以下几个方面做了稍许调整: ...

2018-11-12 · 4 min · 758 words · -

redis string

redis string Redis 字符串数据类型的相关命令用于管理 redis 字符串值 template SET key value [EX seconds] [PX milliseconds] [NX|XX] EX、PX、NX、XX 是 redis 2.6.12 版本添加的可选参数 EX second: 设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。 PX millisecond: 设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。 NX: 只在键不存在时, 才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value XX: 只在键已经存在时,才对键进行设置操作。 KEEPTTL: redis 6.0 版本添加的可选参数, 保留设置前指定键的生存时间 SET KEY_NAME VALUE # 设置过期时间 # 设置过期时间之后再用不带 EX 的命令 比如 set key0 value1, 过期时间会失效 set key0 value0 EX 600 # 将值 value 关联到 key, 并将 key 的生存时间设为 seconds (以秒为单位), 可以直接用 set key0 value0 EX 3 SETEX KEY_NAME seconds VALUE GET KEY_NAME INCR key 将key中储存的数字值增一。 ...

2018-11-06 · 2 min · 228 words · -

chrome os, chromeos basic

chrome os, chromeos basic chrome os 多桌面 https://support.google.com/chromebook/answer/9594869?hl=en Drag windows and apps to your preferred desk. Or use shortcuts: Move a window to a new desk: Right-click the top of a window then, select Move window to another desk. Make a window or app available across all desks: Right-click the top of a window, then select Show in all desks. crosh Crosh stands for “Chrome Shell,” and it lets you run commands that usually don’t have graphical tools. You can do things like installing Crouton for a full Linux OS on your Chromebook or checking the device’s battery health—more “advanced” stuff, to put it crudely. If you’ve ever used the Command Prompt or PowerShell on Windows, Crosh is Chrome OS’ version of that tool. ...

2018-11-03 · 1 min · 193 words · -

easy-rsa

easy-rsa #debian apt-get install easy-rsa mkdir /etc/openvpn cp -r /usr/share/easy-rsa /etc/openvpn/ cd /etc/easy-rsa vim vars ./clean-all ./build-ca ./build-key-server server0 ./build-key client0 #--- pacman -S easy-rsa cd /etc/easy-rsa export EASYRSA=$(pwd) easyrsa init-pki easyrsa build-ca scp /etc/easy-rsa/pki/ca.crt foo@hostname-of-openvpn-server:/tmp/ca.crt #OpenVPN server machine mv /tmp/ca.crt /etc/openvpn/server/ chown root:root /etc/openvpn/server/ca.crt https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-debian-8

2018-11-03 · 1 min · 46 words · -