php出现警告怎么办,想要成为一个优秀的web前端需要做到哪些?
经过这么多年的发展,软件行业分工已然是越来越精细。就前端这块来说,在HTML5和CSS3出现之前,一般人的理解无非是实现几个页面、再加上一点效果而已(在那时,前端在项目开发中的地位较低);但HTML5和CSS3出现之后,用户交互更加丰富、效果更加酷炫,开始向后端一样向工程化方向发展,前端逐渐从后而脱离出来,前后端分离已然发展成为主流;如今,js的增强版Typescript也有了面向对象特性;Angular、React、Vue已成为前端主流框架,前端开发移动应用和桌面应用也成为了现实,node甚至于可以操作数据和做服务器了,web前端已然形成了与Java、PHP等传统后台同台共舞的形势。
功能越强大,责任也就越重。在前端发展越来越庞大的情况,要作为一个优秀的前端,要做到哪些呢?我一般认为,优秀的前端需要做到三个方面,第一,页面布局和交互,这是前端的立命之本;第二,逻辑处理与实现;第三,快速学习。
01 页面布局和交互页面布局和交互就是要对HTML5、CSS3、JS以及Angular、React、Vue等框架的特性了如指掌(这三个框架或许不需要全部了解),不仅管是用原生的HTML还是框架实现精美的页面效果,并且提供酷炫的交互效果。虽然你可以使用Bootstrap或者Vue对应的一些UI库来实现某一些效果,但你必须要懂得他们的原理,比如栅格布局是封装了什么实现的,UI库为什么可以传参,如何根据自己的想法写一个轮播等等,以便在这些UI库不能满足你的需要时可以自己实现(当然,也有的人说,真男人从不用框架,但我说,好的程序员不会重复造轮子)。
02 逻辑处理与实现前面提到,现在前后端分离已是历史必然。在前后端分离的开发模式下,前端与后端通过ajax、Websocket等方式进行数据交换。现在的大趋势是越来越多的逻辑处理会放到前端来处理(比如就有程序员跟我抱怨,后端总想把尽量多的东西放到前端来做),最简单的例子,一些数据格式放到前端来转换、一些数据的判空从前端就开始做。
前面说,Node已然可以用来开发服务器操作数据库了,业务的实现基本就是纯粹的逻辑处理与实现。除此之外,还有很多其他的东西,详见下面这张前端图谱。
03 快速学习其实软件行业的技术发展都很快,可谓日新月异,因此必须要不断学习新的技术和新的模式,不断提升自己,使用更先进的技术构建更完善的系统。如果有可能的话,还要能对前端的发展做一些自己的贡献。
以上就是我的一些拙见,欢迎大家在评论区一起交流。
如何防止服务器被入侵?
这个问题非常好,有助于提高大家安全意识。防止服务器被入侵是网络安全的范畴。我们要系统性思维来考虑。
中国在2016年推出了《网络安全法》,同时,在2019年12月发布了《等级保护》2.0。这里头都对网络安全要求提高到了更高的高度。按国家要求,我们安全至少需要从两方面来防护:
技术手段在计算机安全技术上,我们可以从4个方面来着手分析服务器存在的风险,以及防范措施。
①、物理环境安全
物理环境就是指我们服务器存放的位置,我们需要分析它是否存在风险,比如:
如果是自有服务器,你必须要有相对隔离的专用空间,并配上门禁和视频监控控制出入。因为如果服务器人人都可以触碰到它,那它没有任何安全可言。因为只要物理上可以接触到,那就有可能会被恶意的人盗走服务器,然后在慢慢pj服务器,获取服务器的信息。
如果服务器是托管,你必须要求托管方有上面提到的门禁、视频监控等。不过,一般都会有。
如果是云服务器,也就是虚拟机,那你要求云服务商的物理服务器必须在国内,同样有上面提到的基本物理安全。
②、通讯网络安全
通讯网络就是服务器需要对外提供服务使用的网络系统。这一块是我们比较熟悉的。我们需要做如下措施来保障安全:
出口必须有防火墙,(有条件用双机)通过防火墙的的规则,可以屏蔽不需要开放的端口。使得黑客们的攻击面变窄。
服务器和桌面终端不能在同一个区域,至少需要划分VLAN隔离。
对外服务的访问尽量采用加密访问,比如:web服务就尽量采用HTTPS来提供;
有分支结构访问的,采用加密IPsec VP*或者SSL VP*来访问。
服务器本身需要有 TPM 芯片(现在一般都有),该芯片是可信计算模块,可以帮助我们的服务器对内部的计算信息进行加密。确保不会在计算过程中因为信息被窃取而出现安全问题。
③、区域边界安全
这里说的区域是指我们内部网络进行区域划分,比如:桌面处于一个区域(安全级别较低),服务器处于一个区域(安全级别较高);
不同的区域之间虽然有前面提到的VLAN隔离,但是我们还需要部署防火墙系统,让低安全等级的区域不能随意进入高安全等级区域。
出口的边界区域,除了前面提到需要出口防火墙外,还可以配备入侵防御系统IPS、来防范攻击。因为防火墙只是收窄了攻击面。相当于只是一个小区保安帮忙过滤了一下进出人员。但无法防范伪冒正常流量的攻击。所以需要配备IPS,来对入侵进行防御。
服务器必须配备防病毒系统。如果服务器众多,可以配备防病毒网关。服务器就1-2台,那就在服务器上安全企业杀毒软件,防止病毒入侵。
④、计算安全
计算安全就是服务器本身的计算安全。这里需要防止服务器本身的软硬件不安全和内部人员的恶意行为。
系统要加固,也就是操作系统要及时打补丁,尤其是安全补丁。如果服务器众多,可以考虑上服务器加固系统。
身份安全:也就是服务器的密码必须复杂口令、并且定时更换。有条件的可以采用动态密码和静态密码结合的双因子认证。
定期要进行漏洞扫描,防止服务器在使用过程中出现漏洞。一旦扫描发现漏洞,需要立即进行修复。
服务器日志要集中收集,运维人员定时分析日志。发现异常入侵行为日志,应该立即预警,并作出防御行动。
最后,为了防止内部人员恶意入侵,我们还需要一套堡垒机,通过堡垒机来控制所有的运维人员对服务器的操作。确保其权限始终,并且操作行为可被追踪。
管理手段管理手段是指我们服务器在持续运营的阶段,我们要保障它的安全性可以持续。我们需要通过建立以下管理手段:
建立安全管理制度,制定安全策略、发布完整的安全管理制度;
建立安全管理机构:落实安全岗位、人员职责,并有监督机制;
人员安全管理:对安全人员要定期进行安全培训,对人员入职、离职做好安全管理。对于来访人员应该做好安全管控,比如:必须明确可以进入的区域,不能进入的区域;
采购安全设备,要关注安全设备厂商的资质、设备的认证情况;
建立安全运维制度:无论自己运维还是第三方运维,都必须有一套安全运维管理制度来管理整个安全运维
结束语从系统化思维出发,可以全面防范服务器入侵。由于整个安全防范是非常大的一个范围。每个范围都是很大的技术知识体系。这里只是简要描述。如有疑问可以关注评论。
什么是代码审计?
加密钱包安全审计你的钱包是否安全?
近年来,数字钱包安全事件频发。
2019年11月19日,Ars Technica报道称两个加密货币钱包数据遭泄露,220万账户信息被盗。安全研究员Troy Hunt证实,被盗数据来自加密货币钱包GateHub和RuneScape机器人提供商EpicBot的账户。
这已经不是Gatehub第一次遭遇数据泄露了。据报道,去年6月,黑客入侵了大约100 个XRP Ledger钱包,导致近1000万美元的资金被盗。
2019年3月29日,Bithumb失窃事件闹得沸沸扬扬。据猜测,这次事件起因为Bithumb拥有的g4ydomrxhege帐户的私钥被黑客盗取。
随即,黑客将窃取的资金分散到各个交易所,包括火币,HitBTC,WB和EXmo。根据非官方数据和用户估计,Bithumb遭受的损失高达300万个EOS币(约1300万美元)和2000万个XRP币(约600万美元)以上。
由于数字货币的匿名性及去中心化,导致被盗资产在一定程度上难以追回。因此,钱包的安全性至关重要。
2020年8月9日,CertiK的安全工程师在DEF CON区块链安全大会上发表了演讲主题为:Exploit Insecure Crypto Wallet(加密钱包漏洞利用与分析)的主题报告,分享了对于加密钱包安全的见解。
加密钱包是一种帮助用户管理帐户和简化交易过程的应用程序。
有些区块链项目发布加密钱包应用程序来支持本链的发展——比如用于CertiK Chain的Deepwallet。
此外,还有像Shapeshift这样的公司,其构建了支持不同区块链协议的钱包。
从安全的角度来看,加密钱包最需重视的问题是防止攻击者窃取用户钱包的助记词和私钥等信息。
近一年来,CertiK技术团队对多个加密钱包进行了测试和研究,并在此分享针对基于软件不同类型的加密钱包进行安全评估的方法及流程。
加密钱包基础审计清单
要对一个应用程序进行评估,首先需要了解其工作原理→代码实现是否遵循最佳安全标准→如何对安全性不足的部分进行修正及提高。
CertiK技术团队针对加密钱包制作了一个基础审计清单,这份清单反映了所有形式的加密钱包应用(手机、web、扩展、桌面),尤其是手机和web钱包是如何生产和储存用户私钥的。
应用程序如何生成私钥?
应用程序如何以及在何处存储原始信息和私钥?
钱包连接到的是否是值得信任的区块链节点?
应用程序允许用户配置自定义区块链节点吗?如果允许,恶意区块链节点会对应用程序造成什么影响?
应用程序是否连接了中心化服务器?如果是,客户端应用会向服务器发送哪些信息?
应用程序是否要求用户设置一个安全性高的密码?
当用户试图访问敏感信息或转账时,应用程序是否要求二次验证?
应用程序是否使用了存在漏洞且可被攻击的第三方库?
有没有秘密(比如:API密钥,AWS凭证)在源代码存储库中泄漏?
有没有明显的不良代码实现(例如对密码学的错误理解)在程序源代码中出现?
应用服务器是否强制TLS连接?
手机钱包
相比于笔记本电脑,手机等移动设备更容易丢失或被盗。
在分析针对移动设备的威胁时,必须考虑攻击者可以直接访问用户设备的情况。
在评估过程中,如果攻击者获得访问用户设备的权限,或者用户设备感染恶意软件,我们需要设法识别导致账户和密码资产受损的潜在问题。
除了基础清单以外,以下是在评估手机钱包时要增加检查的审计类目:
应用程序是否警告用户不要对敏感数据进行截屏——在显示敏感数据时,安卓应用是否会阻止用户截屏?iOS应用是否警告用户不要对敏感数据进行截屏?
应用程序是否在后台截图中泄漏敏感信息?
应用程序是否检测设备是否越狱/root?
应用程序是否锁定后台服务器的证书?
应用程序是否在程序的log中记录了敏感信息?
应用程序是否包含配置错误的deeplink和intent,它们可被利用吗?
应用程序包是否混淆代码?
应用程序是否实现了反调试功能?
应用程序是否检查应用程序重新打包?
(iOS)储存在iOS Keychain中的数据是否具有足够安全的属性?
应用程序是否受到密钥链数据持久性的影响?
当用户输入敏感信息时,应用程序是否禁用自定义键盘?
应用程序是否安全使用“webview”来加载外部网站?
Web钱包
对于一个完全去中心化的钱包来说,Web应用程序逐渐成为不太受欢迎的选择。MyCrypto不允许用户在web应用程序中使用密钥库/助记词/私钥访问钱包,MyEtherWallet也同样建议用户不要这样做。
与在其他三种平台上运行的钱包相比,以web应用程序的形式对钱包进行钓鱼攻击相对来说更容易;如果攻击者入侵了web服务器,他可以通过向web页面注入恶意的JavaScript,轻松窃取用户的钱包信息。
然而,一个安全构建并经过彻底测试的web钱包依旧是用户管理其加密资产的不二之选。
除了上面常规的基础审计类目之外,我们在评估客户端web钱包时,还列出了以下需要审计的类目列表:
应用程序存在跨站点脚本XSS漏洞吗?
应用程序存在点击劫持漏洞吗?
应用程序有没有有效的Content Security Policy?
应用程序存在开放式重定向漏洞吗?
应用程序存在HTML注入漏洞吗?
现在网页钱包使用cookie的情况很少见,但如果有的话,应检查:
Cookie属性
跨站请求伪造(CSRF)
跨域资源共享(CORS)配置错误
该应用程序是否包含除基本钱包功能之外的其他功能? 这些功能存在可被利用的漏洞吗?
OWASP Top 10中未在上文提到的漏洞。
扩展钱包
Metamask是最有名和最常用的加密钱包之一,它以浏览器扩展的形式出现。
扩展钱包在内部的工作方式与web应用程序非常相似。
不同之处在于它包含被称为content script和background script的独特组件。
网站通过content script和background script传递事件或消息来与扩展页面进行交流。
在扩展钱包评估期间,最重要的事情之一就是测试一个恶意网站是否可以在未经用户同意的情况下读取或写入属于扩展钱包的数据。
除了基础清单以外,以下是在评估扩展钱包时要增加检查的审计类目:
扩展要求了哪些权限?
扩展应用如何决定哪个网站允许与扩展钱包进行交流?
扩展钱包如何与web页面交互?
恶意网站是否可以通过扩展中的漏洞来攻击扩展本身或浏览器中其他的页面?
恶意网站是否可以在未经用户同意的情况下读取或修改属于扩展的数据?
扩展钱包存在点击劫持漏洞吗?
扩展钱包(通常是background script)在处理消息之前是否已检查消息来源?
应用程序是否实现了有效的内容安全策略?
Electron桌面钱包
在编写了web应用程序的代码之后,为什么不用这些代码来建造一个Electron中桌面应用程序呢?
在以往测试过的桌面钱包中,大约80%的桌面钱包是基于Electron框架的。在测试基于Electron的桌面应用程序时,不仅要寻找web应用程序中可能存在的漏洞,还要检查Electron配置是否安全。
CertiK曾针对Electron的桌面应用程序漏洞进行了分析,你可以点击访问此文章了解详情。
以下是基于Electron的桌面钱包受评估时要增加检查的审计类目:
应用程序使用什么版本的Electron?
应用程序是否加载远程内容?
应用程序是否禁用“nodeIntegration”和“enableRemoteModule”?
应用程序是否启用了“contextisolation”, “sandbox” and “webSecurity”选项?
应用程序是否允许用户在同一窗口中从当前钱包页面跳转到任意的外部页面?
应用程序是否实现了有效的内容安全策略?
preload script是否包含可能被滥用的代码?
应用程序是否将用户输入直接传递到危险函数中(如“openExternal”)?
应用程序会使不安全的自定义协议吗?
服务器端漏洞检查列表
在我们测试过的加密钱包应用程序中,有一半以上是没有中心化服务器的,他们直接与区块链节点相连。
CertiK技术团队认为这是减少攻击面和保护用户隐私的方法。
但是,如果应用程序希望为客户提供除了帐户管理和令牌传输之外的更多功能,那么该应用程序可能需要一个带有数据库和服务器端代码的中心化服务器。
服务器端组件要测试的项目高度依赖于应用程序特性。
根据在研究以及与客户接触中发现的服务器端漏洞,我们编写了下文的漏洞检查表。当然,它并不包含所有可能产生的服务器端漏洞。
认证和授权
KYC及其有效性
竞赛条件
云端服务器配置错误
Web服务器配置错误
不安全的直接对象引用(IDOR)
服务端请求伪造(SSRF)
不安全的文件上传
任何类型的注入(SQL,命令,template)漏洞
任意文件读/写
业务逻辑错误
速率限制
拒绝服务
信息泄漏
总结
随着技术的发展,黑客们实施的欺诈和攻击手段也越来越多样化。
CertiK安全技术团队希望通过对加密钱包安全隐患的分享让用户更清楚的认识和了解数字货币钱包的安全性问题、提高警惕。
现阶段,许多开发团队对于安全的问题重视程度远远低于对于业务的重视程度,对自身的钱包产品并未做到足够的安全防护。通过分享加密钱包的安全审计类目,CertiK期望加密钱包项目方对于产品的安全标准拥有清晰的认知,从而促进产品安全升级,共同保护用户资产的安全性。
数字货币攻击是多技术维度的综合攻击,需要考虑到在数字货币管理流通过程中所有涉及到的应用安全,包括电脑硬件、区块链软件,钱包等区块链服务软件,智能合约等。
加密钱包需要重视对于潜在攻击方式的检测和监视,避免多次受到同一方式的攻击,并且加强数字货币账户安全保护方法,使用物理加密的离线冷存储(cold storage)来保存重要数字货币。除此之外,需要聘请专业的安全团队进行网络层面的测试,并通过远程模拟攻击来寻找漏洞。
0基础建议学什么编程语言?
学习什么编程语言主要取决于你对哪方面感兴趣,每一款语言的诞生都是为了解决某一领域的问题。
C语言C语言既有高级语言的特点也有汇编语言的特点。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于嵌入式开发、驱动开发,对运行效率要求极高的软件开发,系统软件开发和图形开发。运行效率很高,上手难度也高。
代表作:windows,linux
难度指数:5
推荐指数:1
C++C语言的继承,和C的语法类似,但增加了面向对象的功能。主要应用领域是游戏开发,服务器端开发,数字图像处理等方面。
代表作:QQ,Offices
难度指数:5
推荐指数: 1
JAVA万金油编程语言。一款高级编程语言。不仅吸收了C++语言的各种优点,还摒弃了C++令人发指的指针,多继承等功能。语言功能非常强大,安全性很高。主要用于桌面应用程序开发,web应用程序开发,分布式系统和嵌入式系统。
代表作:android软件,ATM机程序。
难度指数:3
推荐指数:5
pythonpython是一款解释型脚本语言,语法简洁,是一款富有哲学思想的语言。语言不需要编译,可以直接运行。主要应用于web开发,科学计算和统计,人工智能,后端开发,爬虫开发。
代表作:instagram,uber,reddit
难度指数:3
推荐指数:5
C#微软开发出来的一款面向对象的语言。和java一样,但是跨平台方面做的不好。主要用于windows上面的软件开发,.net后段开发,游戏脚本开发(unity3d游戏引擎脚本)
代表作:windows商店所有应用(win10专属),王者荣耀客户端(unity脚本语言)
难度指数:3
推荐指数:3
PHP一种通用的脚本语言。主要在服务器上执行的脚本语言。主要领域是web开发。
代表作:部分网页后端
难度指数:3
推荐指数:3
经历这次疫情?
从景观规划的角度来说,本次疫情带来的最大反思是:
近年来风景园林规划设计过度重视人的使用感受,而忽视生物中的动物与微生物系统,特别是对生态系统整体性的忽略,从而提出风景园林建设应注重整体协调、循环再生、生态整合、生物友好、健康共生的风景园林系统规划设计的防疫策略;
近年来,我国城市建设迈入新的阶段,随着城市生态环境越来越受到重视,风景园林景观建设也取得了重大发展,在景观体验和美学欣赏方面更是受到不少关注。
但是在此次疫灾中,我们还是看到很多问题,只有深入发掘这些问题的本质,才能从根本上解决我国的生态问题。
首先是对以人为本、以人为重、人定胜天思想的反思
城市在建设时过于看重“人”的地位,一切规划建设以人为本、以人为重,认为人定胜天,却缺少对自然的考虑以及对其他生物种族的尊重。
从宏观上看,由于城市建设的快速发展,城市建筑通常是尽可能多地占用城市用地资源并提高土地的使用效率,而忽视了其与周围环境的协调性,建筑和绿化之间的矛盾凸显。
且我国群众尚未真正觉察到生态环境恶化所带来的影响,这导致森林覆盖率持续下降,甚至城市中心残丘上的植被也消失殆尽,成为荒坡或沙地。
日本高松栗林公园
植被的破坏,加速了水土流失,使当地生态肌理遭到极大的破坏。此外,风景园林规划在城市规划和建筑设计中一直处于弱势地位,低洼地、山坡地、边角地,开发颇具难度的地块通常被留作绿地。
但这样毫无结构布局的绿地系统真的能够有效构建城市的生态系统,从而达到防灾、减灾的目的吗?
反而是其对自然通道的破坏,大大阻碍了生态恢复过程,妨碍了城市中物质和自然能量的交流,极大地影响了生态系统的调控能力。
从微观上看,单个的景观规划过于重视人的使用体验,即便在园林内部,也大量铺设地砖、高架桥等人工设施。
儿童与小鹿
虽然方便了游人穿行和嬉戏,但对生活于其中的动物、植物来说,却失去了休憩、繁衍甚至生活的空间。
这些设施只为了方便人类,却剥夺了其他生物的生存空间,使得园林中的生物种类锐减。
总而言之,生态系统格局缺乏连续性,自然环境与人工环境缺少有机整合,自然景观生态未受尊重,最终影响城市生态框架的形成及其整体生态功能的发挥。
其次是对生态系统中生物系统缺失的反思在城市中,由于人工化的问题,自然生态绿化大量减少,整个区域的生境类型趋于单一化。
城市化使植物生存环境发生改变,导致当地植物区系随之改变。本土自然群落的比例由于景观美学问题而大幅降低,乡土植物种类锐减;
与之相反,人工种植和移栽使外来物种占据了主导地位,导致植物组成单一且种类相似,缺乏空间层次,分布零散且不均衡。
投喂山羊
动物的栖息环境同样受到人类活动的巨大影响而急剧恶化,能够存活下来便已极为不易,通常还要受到人类驯化及圈养,物种丰富度降低。
极端的景观美学、过度的人工铺装、城市化进程的加速发展,都使得城市中的土壤被覆盖,而土壤中生活的植物、微生物失去依存的环境而数量锐减,城市内部原生态缺失,生态层次大幅降低。
这造成生态、生物系统缺失,生态稳定性下降,生态肌理、生态脉络中断,生态足迹没有得到很好的延续。景观规划设计如不重视这些问题,很有可能会导致更多物种的灭绝甚至更多不可逆的灾害发生。
完整内容可参见:http://www.shspdi.com/index.php?a=shows&catid=13&id=53
关注公众号【上海空间规划】,了解更多有关城市建设、国土空间规划方面的最新观点。