php攻击怎么预防,php如何防止sql注入攻击?
这个问题感觉对一个多年开发人员来说应该还是比较有资格回答的,毕竟录制过sql注入以及防御的课程。
搞明白sql注入
注入攻击漏洞例如SQL,OS以及LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。
然后给大家看看经常会引起sql注入的sql语句
1'or 1=1 #
2'or 1=1 --(空格)
3union all select 1,2,3 #
4username=‘ UNION SELECT 1,version(),3 #(版本)
5username=‘ UNION SELECT 1,user(),3 #(用户)
然后再给大家介绍一下sql注入的一个工具是sqlmap
最后给大家两点建议
1 使用预处理语句PDO
2 对参数进行转义(addslashes/mysql_real_escape_string)
当然了大家如果想具体学习sql的攻击原理以及,sql的防御。和sqlmap的使用可以私聊我哦
nginx与php?
技术方案很多呀,总的来说就是从软件层面和硬件层面两个方向,逐步升级吧。
单台服务器时先是优化代码,然后升级配置。我的建议就是服务器单台32核64g为最划算的,再升级就不如买两台来分摊了。
最基础的分配方案就是php 文件一台,mysql一台,图片和文件一台,缓存一台。这一般是一套电商系统最基本的搭配,开始流量少数据少可以配置低点,缓存和php可以用一台,图片是一定要单独服务器,要不搬家换服务器要折磨死你,建议用对象存储。
如果你的数据量在百万以下的,数据库读写操作肯定不大,主要压力在php,可以考虑生成静态。百万以上级别的数据就不建议生成了,静态文件太占空间,搬家换服务器也困难。这时候的压力主要在mysql,压力在查询部分的,先使用redis或mencache来做sql查询的缓存,使用全文索引技术来做搜索,推荐讯搜,二开简单。 单表上百万的用sql 做like查询太慢,mysql负载太大。
一般几万ip,单表五百到一千万,压力在查询的上面方案不错。
压力在写操作的,用读写分离,两台mysql服务器,一台读,一台写。
其实方案太多了,一时说不清楚,比如数据库分布式,缓存分布式,程序架构分布式。这些要根据具体情况来以最低成本来解决。
如果你不是程序员,下面我给你一个低成本方案
先是一台服务器来撑,配置升级到8核32g就打住。memcache或者redis必须要用,然后百度云加速免费版的一定要用上。
撑不住了,如果是图片多的网站,把图片分离出去,现在的程序一般都支持图片单独存放的。七牛云或者又拍云,程序没接口找人开发个,成本应该就一两千。
如果还慢,压力一般是在mysql,这时把MySQL换独立服务器,记住一定要买同一个机房的服务器用内网连接,mysql服务器可以不需要带宽,或者为了管理方便买1m。
还慢的话,不要着急加服务器,先找技术找慢的原因,优化sql语句,优化缓存方案。
然后花钱买百度云加速的套餐,扛一般的cc攻击没问题。
再慢的话考虑把数据量在五百万以上的分表,这个成本估计稍微高点,比加服务器做读写分离要高,不过治本。
分表后再做读写分离更好,不过要改程序,麻烦。现在一般程序都支持傻瓜式的配置读写分离,比分表简单。
如果你自己没有技术团队,到这一步其实也就到头了,再往下什么一主多从,多主多从,分布式。负载缓存,需要专业技术团队来干了,你得养一帮人了。
开源软件漏洞数量在过去一年有怎样的变化?
几年前,“开源”还是点点星火,如今已成燎原之势。在过去的2018年,企业都在积极加强自己在开源方面的实力,IBM大手笔340亿美元收购了RedHat,微软75亿美元收购了GitHub。
开源软件蓬勃发展的同时,安全漏洞风险也在增加。SNYK不仅向500多名开源用户和维护人员分发了调查报告,同时也监控了SNYK内部监控和保护的数十万个项目的漏洞数据,并结合外部研究,发布了2019年开源安全状况报告。
首先,我们先来看几个关键性结论:
2017年到2018年,包管理工具索引的开源包数量呈爆炸式增长,其中Maven Central增长了102%,PyPI增长了40%,NPM增长了37%,NuGet增长了26%,RubyGems增长了5.6%。
应用程序的漏洞在短短两年的时间内增加了88%,其中SNYK跟踪的Rhel、Debian和Ubuntu的漏洞数量,2018年是2017年的四倍多。
最受欢迎的默认Docker映像Top 10中的每一个都至少包含30个易受攻击的系统库,其中44%可以通过更新Docker映像来修复已知漏洞。
调查显示,37%的开源开发人员在CI期间不会进行任何的安全测试,54%的开发人员不会进行Docker映像的安全测试,而从漏洞出现在开源包中到漏洞修复的时间可能会超过两年。
调查显示,81%的调查者认为开发人员应该负责开源安全,68%的调查者认为开发人员应承担Docker容器镜像的安全;但只有十分之三的开源维护人员认为自己应该具备较高的安全知识。
开源应用开源软件对现代软件开发产生了深远的影响,并且这种影响力还在每年递增。据GitHub报告称,2018年新用户的注册量超过了之前六年的总和,且平台上创建的新组织和新存储库增加了40%。另外,开源软件同时也推动了语言和平台的发展,影响了行业增长,Forrester报告称,开源软件是业务技术战略的重要组成部分。
前文我们曾提到,科技公司都在大量使用开源,每个编程语言生态系统中都有越来越多的开源库被索引,且有的增长率实现了两位数,甚至是三位数的增长(Maven Central实现了102%的三位数增长。)
开源的使用正走在高速路上,2018年Java包增加了一倍,NPM增加了大约250000个新包。
据Linux基金会报告称,2018年开源贡献者提交了超过310亿行的代码,这些代码一旦要在实际的生产环境中使用,那么拥有、维护和使用此代码的人就必须承担一定的责任,规避风险。
据CVE列表报告显示,2017年总共有14000+个漏洞,打破了CVE一年内报告的漏洞记录,而2018年,漏洞数量继续上升,超过了16000个。
我们在调查中关注了不同生态中不同软件包的下载数量,同时也关注了这些开源软件包如何转化为用户采用。
根据Python注册表显示,PYPI在2018年的下载量超过140亿,相比于2017年报告中的63亿,下载量增加了一倍。从下表中我们可以看到在8月份的时候,下载量出现了激增的情况,这是由于LineHaul(PYPI的统计收集服务)出现故障造成的,该故障导致在8月之前大半的下载量丢失。
另外,开源软件消费也取得了巨大的飞跃,从PYPI中下载python包的数量是原来的两倍,从NPM下载javascript包的数量更是惊人,达到3170亿个。
NPM注册表是整个JavaScript生态系统的核心。在过去的几年中,无论是添加还是下载的软件包数量都稳步增,仅2018年12月的一个月时间就有300多亿次。
而Docker的采用也促进了开源软件的增长,据悉,Docker公司在2018年每两周就有超过10亿个容器下载,截止到目前,数量约有500亿个。仅2018年一年就有超过100万个新的应用程序添加到Docker Hub中。
风险和影响而伴随着软件包数量的增加,是漏洞的增加,前文我们提到了2018年新漏洞数量再创新高,超过16000个。
在GitHub发布的Octoverse报告中,Security成为了最受欢迎的项目集成应用程序。而Gartner的行业分析师在最近的一份应用程序安全报告中也表示企业应该在应用程序生命周期中尽早测试安全性。
开源软件使用的越多,代码中自然就包含了更多其他人的代码,累积的风险就会越大,因为这些代码目前或者是将来可能会包含漏洞。当然,这里的风险并不单单是指代码的安全性,同时也包括了所采用代码的许可以及该代码是否违反了许可证本身。
在接受调查的受访者中,43%至少有20个直接依赖关系,这无疑就需要增强对这些引入库的源码的监控。而事实上,只有三分之一的开发人员可以在一天或更少的时间内解决严重性漏洞。
“企业应定期使用SCA工具来审计包含软件资产(如版本控制和配置管理系统)的存储库,以确保企业开发和使用的软件符合安全和法律标准、规则和法规。另外,应用程序开发人员也可以使用SCA工具来检查他们计划使用的组件。
如今,没有开源依赖的情况下写代码几乎是不可能完成的任务,所以正确跟踪所依赖的库就成为了一个难题。采取何种措施才能既消除漏洞,同时还能保持依赖项之间的兼容性?
NPM、Maven和Ruby中的大多数依赖项都是间接依赖项,由少数明确定义的库请求。在调查中,Snyk扫描了100多万个快照项目,发现间接依赖项中的漏洞占整个漏洞的78%,这说明我们需要进一步增强对依赖树的洞察,并突出脆弱路径的细微差别。
开源维护者的安全状况虽然在大多数开发人员和维护人员都认同在构建产品和编写代码时,安全性是非常重要的,但是对他们而言,在构建开源项目时没有“教科书式”的规则可供他们参考,因此安全标准可能有很大的不同。
在今年的调查中,大部分用户(平均每10个用户中就有6.6个)都将他们的安全技术选择在中等水平,7%的受访者认为目前的安全技术水平较低。
相应的专业知识排名,2019年的排名发生了一些变化,尤其是High和Low,其中High占据了30%,Medium占据了63%,而low占据了7%,而在2017年,High只占了17%,low占了26%。
在调查过程中,我们还发现了维护人员通常都会将时间和经历放在项目的功能性方面,而往往忽视了安全性。
安全审计安全审计作为代码审查的一部分,其中需要双方确保遵循安全代码最佳实践,或者采取另一种方式,即通过运行不同的安全审计变体,如静态或动态应用程序安全测试。
无论是手动审计还是自动审计,它们都是检测和减少应用程序中漏洞的重要组成部分,并且应该在开发阶段尽可能早地定期执行,以降低后期暴露和数据泄露的风险。
去年,有44%的受访者表示他们从未进行过安全审计,而今年,这一数字要低得多,只有26%的用户表示他们没有审计源码。与去年的报告相比,今年重复审计也呈现出了积极的趋势,以季度和年度为单位,有10%的用户会经常的审计代码。
如何防止服务器被入侵?
你的问题,有我回答,我是IT屠工!
1、用户安全
(1) 运行 lusrmgr.msc,重命名原 Administrator 用户为自定义一定长度的名字, 并新建同名Administrator 普通用户,设置超长密码去除所有隶属用户组。
(2) 运行 gpedit.msc ——计算机配置—安全设置—账户策略—密码策略 启动密码复杂性要求,设置密码最小长度、密码最长使用期限,定期修改密码保证 服务器账户的密码安全。
(3) 运行 gpedit.msc ——计算机配置—安全设置—账户策略—账户锁定策略 启动账户锁定,设置单用户多次登录错误锁定策略,具体设置参照要求设置。
(4) 运行 gpedit.msc ——计算机配置—安全设置—本地策略—安全选项 交互式登录 :不显示上次的用户名;——启动 交互式登录:回话锁定时显示用户信息;——不显示用户信息
(5) 运行 gpedit.msc ——计算机配置—安全设置—本地策略—安全选项
网络访问:可匿名访问的共享;——清空
网络访问:可匿名访问的命名管道;——清空
网络访问:可远程访问的注册表路径;——清空
网络访问:可远程访问的注册表路径和子路径;——清空
(6) 运行
gpedit.msc
——计算机配置—安全设置—本地策略 通过终端服务拒绝登陆——加入一下用户ASPNET
Guest IUSR_***** IWAM_*****
NETWORK SERVICE
SQLDebugger
注:用户添加查找如下图:
(7) 运行 gpedit.msc ——计算机配置—安全设置—本地策略—策略审核 即系统日志记录的审核消息,方便我们检查服务器的账户安全,推荐设置如下:
2、共享安全
(1) 运行 Regedit——删除系统默认的共享 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameter
s]增加一个键:名称 : AutoShareServer ; 类型 : REG_DWORD值; : 0
(2) 运行 Regedit——禁止 IPC 空连接 [Local_Machine/System/CurrentControlSet/Control/LSA] 把 RestrictAnonymous 的键值改成 ”1”。
3. 服务端口安全
(1) 运行 Regedit——修改 3389 远程端口
打开 [HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control\Terminal
Server\Wds\rdpwd\Tds\tcp],将 PortNamber 的键值(默认是3389 )修改成自定义端 口:14720
打开 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStations\RDP-Tcp] ,将 PortNumber 的键值(默认是3389)修改成自定义 端口 :14720
(2) 运行 services.msc——禁用不需要的和危险的服务 以下列出建议禁止的服务,具体情况根据需求分析执行:
Alerter 发送管理警报和通知
Automatic Updates Windows 自动更新服务
Computer Browser 维护网络计算机更新(网上邻居列表)
Distributed File System 局域网管理共享文件
Distributed linktracking client 用于局域网更新连接信息
Error reporting service 发送错误报告
Remote Procedure Call (RPC) Locator RpcNs*远程过程调用(RPC)
Remote Registry 远程修改注册表
Removable storage 管理可移动媒体、驱动程序和库
Remote Desktop Help Session Manager 远程协助
Routing and Remote Access 在局域网以及广域网环境中为企业提供路由服务
Shell Hardware Detection 为自动播放硬件事件提供通知。
Messenger 消息文件传输服务
Net Logon 域控制器通道管理
NTLMSecuritysupportprovide telnet 服务和 Microsoft Serch 用的
PrintSpooler 打印服务
telnet telnet 服务
Workstation 泄漏系统用户名列表(注:如使用局域网请勿关闭)
(3) 运行 gpedit.msc —— IPSec安全加密端口,内部使用加密访问。
原理:利用组策略中的“ IP 安全策略”功能中,安全服务器(需要安全)功能。
将 所有访问远程如13013 端口的请求筛选到该ip安全策略中来, 使得该请求需要通过 双方的预共享密钥进行身份认证后才能进行连接,其中如果一方没有启用“需要安全”时,则无法进行连接,同时如果客户端的预共享密钥错误则无法与服务器进行 连接。在此条件下,不影响其他服务的正常运行。
操作步骤:
1) 打开
GPEDIT.MSC
,在计算机策略中有“ IP 安全策略” ,选择“安全服务器(需要 安全)”项目属性,然后在IP 安全规则中选择“所有IP 通信”打开编辑,在“编 辑规则属性”中,双击“所有IP通信”,在 IP 筛选器中,添加或编辑一个筛选2) 退回到 “编辑规则属性” 中,在此再选择“身份验证方法” 。删除“ Kerberos 5”,
点击添加,在“新身份验证方法”中,选择“使用此字符串(预共享密钥) ,然后填写服务器所填的预共享密钥 (服务器的预共享密钥为 ”123abc,.”)。然后确 定。
3) 选择“安全服务器(需要安全)”右键指派即可。 附截图:
以上是我的回答,希望可以帮助到您!
作为Web前端工程师?
Web前端入行门槛低、薪资待遇高、市场需求大,是很多人进入IT行业的首选语言。工欲善其身必先利器,作为初学前端行业的小白,如果知道一些好用的软件工具可以帮助他们更好的工作。下面,分享Web前端开发工程师常用的工具。
1、Bootstrap
Bootstrap是快速开发Web应用程序的前端工具包。它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式、表单、buttons、表格、网格系统等等。
2、Foundation
Foundation是一个易用、强大而且灵活的框架,用于构建基于任何设备上的Web应用。提供多种Web上的UI组件,如表单、按钮、Tabs等。
3、Cloud9IDE
Cloud9IDE是一个基于Node.JS构建的JavaScript程序开发WebIDE。它拥有一个非常快的文本编辑器,支持为JS,HTML,CSS和这几种的混合代码进行着色显示。Cloud9IDE还为node.js和GoogleChrome集成调试器,可以在IDE中启动、暂停和停止。
4、Notepad++
Notepad++是一款非常有特色的编辑器,是开源软件,可以免费使用。我们开发人员都是必备的。支持的语言:C,C++,Java,C#,XML,HTML,PHP,Javascript!
5、VisualStudio
CodeVisualStudioCode是一个运行于OSX,Windows和Linux之上的,针对于编写现代Web和云应用的跨平台编辑器。
6、GIMP
GIMP是GNU图像处理程序(GNUImageManipulationProgram)的缩写。包括几乎所有图像处理所需的功能,号称Linux下的PhotoShop。GIMP在Linux系统推出时就风靡了绘图爱好者圈。
7、SecureHeaders
SecureHeaders是Twitter送给Web开发者的一份大礼,作为一款Web安全开发工具,Secureheaders能够自动实施安全相关的header规则,包括内容安全政策(CSP),防止XSS、HSTS等攻击,防止火绵羊(Firesheep)攻击以及XFO点击劫持等。
8、Fontello
Fontello是个图标字体生成器。这个工具允许用户把这些图标Web字体放到自己的项目中。主要特性如下:缩小字形集合,减小字体大小;合并一些字体标记到单个文件中;访问大量专业级的开源图标。
想要成为优秀的Web前端开发工程师,除了好用的工具,项目实战经验也必不可少。其实精通Web前端开发并非易事。我们需要具备多种能力,并根据具体情况施展这些能力这有些难度,但并不是不可能。Web前端开发是一项需要花很多时间才能掌握的技能。