BLCL的博客小馆

📢📢📢 阿里云双十一,2核2G3M的服务器,99元一年,新老用户续费同享!!

首页

关于

归档

PythonDocker

一日一技:如何安全运行别人上传的Python代码?

写后端的同学,有时候需要在网站上实现一个功能,让用户上传或者编写自己的Python代码。后端再运行这些代码。涉及到用户自己上传代码,我们第一个想到的问题,就是如何避免用户编写危险命令。如果用户的代码里面涉及到下面两行,在不做任何安全过滤的情况下,就会导致服务器的Home文件夹被清空。12import osos.system('rm -rf ~/*')有人想的比较简单,直接判断用户的代码里面有没有os.system、exec、subprocess……这些危险关键词不就可以了吗?这种想法乍看起来没有问题,但细想下,就会发现非常天真。如果用户的代码像下面这样写,你又要如何应对?123456789import requestscode = requests.get('https://www.kingname.in..

更多
loading..
stdout

火星上怎么结算工资

看到个段子 突然让我想起个事,如果去火星打工,薪资该怎么计算?摘录 wikipedia 火星的恒星时长 24小时37分钟22.663秒,而太阳日则长 24小时39分钟35.24409 秒。而地球的恒星时和太阳日则分别是 23小时56分钟4.0916秒 及 24小时。在比较之下,一火星太阳日等于1.027491地球太阳日,即比地球太阳日长2.7%。 怎么有两个天?继续搜 太阳日(英语:solar day)是依据太阳运动,所定义的时间,可以分为视觉太阳日和平均太阳日。一太阳日传统称为一“日”、一“天”或一“昼夜”。 英语里把火星的一天叫做一个 Sol。一个火星年在英文的 wikipedia 有讲 sidereal year ... is about 686.98 Earth solar days..

更多
loading..
CTFWriteUp

CTF | 2023 USTC Hackergame WriteUp

引言 中国科学技术大学第十届信息安全大赛 比赛时间:北京时间 2023 年 10 月 28 日 中午 12:00 ~ 11 月 04 日 中午 12:00(共七天);添加到日历 为了让参赛的同学们更好地平衡学习和比赛,按照传统,我们将于 10 月 29 日(周日)晚 20:00 至 10 月 30 日(周一)早 8:00 期间关闭比赛平台。在此期间选手们可以好好休息,完成自己的作业,准备迎接新的一周。 赛制: 个人线上赛,解题模式,约 25 道题目,有实时排行榜。 比赛题目分为 5 类,分类如下: 综合技能(general) 程序逆向与漏洞利用(binary) 密码学与数学(math) 网站安全(web) 人工智能(AI) https://hack.lug.ustc.edu.cn/ 这周有啥娱乐活..

更多
loading..
爬虫Python

一日一技:爬虫如何解析JavaScript Object?

我们在开发爬虫的过程中,经常发现有一些网站,会直接把数据放到HTML中的<script>标签里面。这些数据长得有点像JSON,但又有差异,如下图所示:这种格式,我们叫做JavaScript Object。长得很像Python的字典,又很像是JSON。但是这个格式在Python里面,无论直接当字典解析,还是当JSON解析,都会报错,如下图所示:遇到这种情况,有同学准备使用正则表达式来解析,又有同学直接放弃。但实际上,这种数据结构,使用Yaml是可以直接解析成Python的字典。我们首先来安装一下Yaml:1pip install pyyaml然后直接像解析JSON一样解析:12345678910import yamldata = '''{ name: '青南', salary: 99..

更多
loading..
爬虫Python

一日一技:HTML里面提取的JSON怎么解析不了?

我们在开发爬虫的过程中,经常发现有一些网站,会直接把数据以JSON的形式,通过<script>标签放到页面源代码中。如下图所示:有时候请求URL拿到HTML的过程比较麻烦,有些同学习惯先把HTML复制到代码里面,先把解析的逻辑写好,然后再去开发请求HTML的代码。这个思路本身是没有什么问题的,于是他们就写了如下的代码:代码中的html_data = '''里面就是原样复制的网页HTML,没有做任何修改,因为太长了,我这里做了折叠。展开以后如下图所示:但当运行这段代码的时候,发现代码报错了,如下图所示:看这个报错信息,难道说是JSON本身有问题?于是,你到网页上,把这个JSON复制下来:使用JSONHero这种验证网站,进行验证,结果发现一切正常:这就见鬼了,为什么正则表达式提取的JSON就不对..

更多
VPSPVEESXi

自建实体服务器

Foreword 打算自建服务器,完成一些内部的测试和使用,有些东西也需要内部验证,一些管理软件也都需要一个内部平台。 硬件选型 成本考虑,1手最新服务器买不起,所以上个老服务器,能用就行了,水平其实差不多的。 机柜 Dell R7525 CPU 7H12*2 内存 64G*12 硬盘 7.68T*1 阵列卡H745卡 电源 双电2400w 价格26760 不含税 系统虚拟化 有了硬件基础以后,还需要一个好用的系统方便做虚拟化,想折腾就上PVE,想稳定就用ESXi PVE PVE,全称Proxmox Virtual Environment,虚拟机内核是KVM,主要还是Linux系统,扩展能力很强,对应要求操作的人也很高 ESXi ESXi是VMWare旗下..

更多
loading..
spark

Spark create function 逻辑

问题来源函数注册成功, 但是在调用的时候提示无法加载对应的类.结论spark 创建函数的时候并不会直接去加载对应的资源/类, 只有在使用时才会加载对应的资源和类, 因此创建成功并不能代表能正常使用hive 创建函数的时候会去加载对应的类, 所以创建成功即代表可用spark-sql 测试create temp func 和 create func 的区别12CREATE [ OR REPLACE ] [ TEMPORARY ] FUNCTION [ IF NOT EXISTS ] function_name AS class_name [ resource_locations ]从语法上都是, 创建一个自定义函数, 只是前者注册的是临时函数, 只在当前 Session 有效. 后者注册的函数是永久函数..

更多
stdout

浏览器拉起钉钉客户端并跳转OA工单

又是 corporate software engineering 吃屎的一天。用户在内部系统走流程,厂里用的是钉钉自带的OA工单审批。已经接入了API创建、完成工单 问题在于发起工单之后,用户并没有感知,不知道工单去哪里了,流程就断了,向钉钉官方售后发起咨询,对方丢了一句:不支持。无语 只能自己鼓捣。已知工单链接,在钉钉聊天窗口内部的最短的网址为: https://aflow.dingtalk.com/dingtalk/mobile/homepage.htm?corpid=...&procInstId=...#approval 对方丢了一个 dingtalk:// 跳转协议 反复尝试,发现一个很有用: 桌面端打开URL dingtalk://dingtalkclient/page/li..

更多
shellbashzsh

安装并使用zsh

首先我们安装zsh,并切换默认的shell为zsh,之后重启进入zshsudo apt-get install zshchsh -s /bin/zshsudo shutdown -r now之后我们安装oh-my-zsh,因为网络的原因所以设置了代理wget -e https_proxy=192.168.65.100:7890 https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.shchmod +x install.sh./install.sh然后再安装zsh命令自动补全插件zsh-autosuggestionsgit clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH..

更多
stdout

SVG放在 img 中不能加载图片/字体

最近想在 markdown 里搞图文混排,遇到一个大图把版面占完了,想缩小一些,由于 .md 渲染器安全限制,没法直接指定宽高 只能从图片本身想办法,首先最直接的手段就是服务器再缩放一次,但是蛋痛的问题是缩放之后文件怎么存,怎么给静态文件路由,怎么保障图片可用性,怎么兼容各种尺寸,想想都头大。 想到一个 hack,要不直接放一个 .svg 进去,因为 svg 支持加载位图资源,所以把 svg 位图缩小一点,让浏览器渲染 svg 不就行了。 没想到就被这个 hack 坑了。原因是 svg 如果被 <img> 标签渲染,那么禁止加载任何外部资源,脚本也禁止执行。 为了证明这个限制,我写了个 demo 放在 https://lab.est.im/shit_svg/ 这个问题太隐蔽了。stackove..

更多
1181920212280