技术文章

熟悉面试中常见的的 web 安全问题

a 夏天 提交于 2021-02-20 02:37:42
背景 之前出去面试的时候, 经常会被问到一些安全方面的问题。 安全涉及的领域很大, 我也仅仅是了解一些皮毛, 每次面试前都要找资料复习, 很麻烦。 所以我就根据之前搜集的一些资料和面试的经验,系统的梳理了一下,希望对大家有所帮助。 正文 首先简单介绍几种常见的攻击方式: SQL注入 XSS CSRF 点击劫持 中间人攻击 1. SQL 注入 这是一种比较简单的攻击方式。 如果后台人员使用用户输入的数据来组装SQL查询语句的时候不做防范, 遇到一些恶意的输入, 最后生成的SQL就会有问题。 比如地址栏输入的是: articlrs/index. php ?id=1 发送一个get请求, 调用的查询语句是: sql = "SELECT * FROM articles WHERE id =", $id 正常情况下, 返回 id = 1 的文章。 如果攻击者想获得所有的文章,语句就可以改成: articlrs/index. php ?id=-1 OR 1 = 1 这样就可以了, 为什么呢? 这是因为,id = -1 永远是 false,1=1 永远是true,所有整个where语句永远是ture. 所以 where 条件相当于没有加where条件,那么查询的结果相当于整张表的内容,攻击者就达到了目的。 现在的系统一般都会加入 过滤 和 验证 机制, 可以有效预防SQL注入问题。 2. XSS

js闭包

隐身守侯 提交于 2021-02-20 02:37:16
一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 Js代码    var n=999;   function f1(){     alert(n);   }   f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量。 Js代码    function f1(){     var n=999;   }   alert(n); // error 这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量! Js代码    function f1(){     n=999;   }   f1();   alert(n); // 999 -------------------------------------------------------------------------------------------------------- 二、如何从外部读取局部变量? 出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。 那就是在函数的内部,再定义一个函数。 Js代码    function

行为树 ai

左心房为你撑大大i 提交于 2021-02-20 02:36:53
  行为树常见的基本类型节点有5种(当然也可以扩展更多类型):    1)顺序节点 (Sequence):属于组合节点,顺序执行子节点,只要碰到一个子节点返回false,则停止继续执行,并返回false,否则返回true,类似于程序中的逻辑与。    2)选择节点 (Selector):属于组合节点,顺序执行子节点,只要碰到一个子节点返回true,则停止继续执行,并返回true,否则返回false,类似于程序中的逻辑或。    3)平行节点 (Parallel Node):提供了平行的概念,无论子节点返回值是什么都会遍历所有子节点。所以不需要像Selector/Sequence那样预判哪个Child Node应摆前,哪个应摆后。Parallel Node增加方便性的同时,也增加实现和维护复杂度。    4)条件节点 (Condition):属于叶子节点,判断条件是否成立。    5)执行节点 (Action):属于叶子节点,执行动作,一般返回true。 来源: oschina 链接: https://my.oschina.net/u/2754191/blog/725046

月入5W卖肉阿姨 VS 月薪1W程序员,谁才是人生赢家?

不想你离开。 提交于 2021-02-20 02:28:40
本文原创公众号: 不会笑青年,授权转载请联系微信(laughyouth369) ,授权后,请在原创发表48小时后再转载。 < END > 作者:不会笑青年 漫画师:Summer 【不会笑青年】 全网唯二以程序员为主题的漫画公众号 微信扫描二维码,关注我的公众号 本文分享自微信公众号 - 凯哥java(kaigejava)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/930697/blog/4805331

买卖股票的最佳日期学会了动态规划

旧城冷巷雨未停 提交于 2021-02-20 01:33:51
原创公众号:bigsai 欢迎加入力扣打卡 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 祝大家新年快乐!万事如意! 买卖股票的最佳日期① 题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。 示例 2: 输入:prices = [7,6,4,3,1] 输出:0 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。 提示: 1 <= prices.length <= 10^5 0 <= prices[i] <= 10^4 分析 : 通过题意很容易知道题目的要求就是在整个数组中找到一个前后顺序差值最大的一对数字并将差值返回.如果使用暴力破解的方法(O(n2)向后遍历))固然可以但时间复杂度过高,所以我们就采取一个策略在O(n

「SAP技术」SAP MM 明明有维护源清单,还是不能下PO?

风格不统一 提交于 2021-02-20 01:16:41
SAP MM 明明有维护源清单,还是不能下PO? 下午收到用户报错说,创建采购订单失败,报错 :Material ### not included in source list despite source list requirement. 如下图: 实际上该物料的source list主数据是有维护的: 并且source list都没有过期。那究竟是何缘故导致报错呢? 经查,原因在于该物料是一个MPN物料, 需要在相关IM物料号的source list里'MPN Material'里输入MPN 料号, 如下维护好source list之后, 就能顺利下采购订单了。 2019-09-20 写于苏州市。 来源: oschina 链接: https://my.oschina.net/u/4270627/blog/3389578

2020年Java实习面试总结回顾:从面试连跪到收割offer(10家大厂面经)

落爺英雄遲暮 提交于 2021-02-20 01:15:27
江湖路漫漫其修远兮,希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华 阿里巴巴 春招实习 电话面试 阿里一面 今年3月份左右,因为有一个阿里梦,所以兴致勃勃地投了阿里的Java实习岗位,没有内推,走的是正式流程,结果面试却来的比想象中早一些。 当时今年年初发生的事情嘛,大家也都知道,所以是直接参加视频面试,第一次面阿里,当时还是挺紧张的。 一面面试官问的问题比想象中要简单,可能是看在我年龄不大的原因吧! 项目(作为刚毕业的我,这个是硬伤,没有好的项目可说) 项目中的问题(面试官显然对这些项目没啥兴趣,所以没问几个问题就跳过了) Java三大特性 Jvm虚拟机 内存结构、算法、垃圾回收 集合类 链表和数组的区别 map和set的区别 二分查找代码 mysql相关的问题 spring 前后端数据交互 网络、操作系统 后面这些问题记不大清了,但是都问的比较基础,基本上就是刷过面经就能搞定的程度,当时对数据库的索引没有答好。 后续: 一面之后马上来了二面,二面面试官问了一个问题就让我等结果,并且告诉我他们的部门是阿里云。 本来我还以为这是过了的意思,后来一个HR问我一周内能不能到岗,我说大概要两周,结果。。。结果居然就没有下文了。(哭晕在厕所) 到现在我都不知道这个HR是不是因为时间问题而拒绝了我。于是我就这样第一次和阿里擦肩而过。 所以告诫大家,如果真的是很想去的公司

Redis——AOF持久化

≡放荡痞女 提交于 2021-02-20 01:15:08
除了RDB持久化功能之外,Redis还提供了AOF(Append Only File)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的,如下所示: AOF持久化的实现 AOF持久化功能的实现可以分为命令追加(append),文件写入,文件同步(sync)三个步骤。 命令追加: 当AOF持久化功能处于打开状态时,服务器在执行一个写命令之后,会以协议格式将被执行的写命令追加到服务器状态的aof_but缓冲区的末尾: struct redisServer { //…… sds aof_buf; /* AOF buffer, written before entering the event loop */ //…… } AOF文件的写入和同步 如果用户没有主动为appendfsync选项设置值,那么appendfsync选项的默认值为everysec。 文件的写入和同步 为了提高文件的写入效率,在现代操作系统中,当用户调用write函数,将一些数据写入到文件的时候,操作系统通常会将写入数据库暂时保存在一个内存缓冲区里面,等到缓冲区的空间被填满,或者超过了指定的时限之后,才真正地将缓冲区中的数据写入到磁盘里面。 这种做法虽然提高了效率,但也为写入数据库带来了安全问题,因为如果计算机发生停机

Python3.7.2版本出现ModuleNotFoundError: No module named 'paramiko'解决办法

微笑、不失礼 提交于 2021-02-20 01:14:52
Python3.7.2版本出现ModuleNotFoundError: No module named 'paramiko'解决办法 以下都是自己遇到这种情况的解决方法总结。 刚开始学习Python,就遇到执行Python文件报错, 一直提示import paramiko ModuleNotFoundError: No module named 'paramiko' 网上百度了很多方法,比如: 1.paramiko模块依赖于pycrypto模块,然而我在安装paramiko时就一直报错;又去安装MinGW、Visual Studio最后都以失败告终; 浪费了很多脑细胞,心力交瘁。 最后又看到一篇文章直接pip install paramiko,但是又遇到新问题,如下: 'pip' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 2.网上百度出:一般安装python时就会自动把pip安装好,所以要先明确自己是否安装了python。 如果确定自己安装了python,那就说明是没有配置环境变量,找到自己安装python的目录,找到Scripts文件夹,并把这个Scripts文件夹的目录添加到Path环境变量即可。 3.执行pip install paramiko,出现Fatal error in launcher: Unable to create process using '

我去做点小买卖

落花浮王杯 提交于 2021-02-20 01:14:28
http://www.jianshu.com/p/d22d22ff7786 那年,我去做点小买卖,亏本了。回到家,我爸问我:“生意好不好?”我低着头:“爸,能不能帮帮我,我底裤都赔了!”我爸拍拍我肩膀:“振作点!我不会坐视不理的!”第二天我睡醒,我看到床头柜放了几条新底裤,还有一张字条:“爸只能帮你到这了 来源: oschina 链接: https://my.oschina.net/u/4357668/blog/3205474