分类归档

网站开发

FWQ
CMS教程
采用织梦搭建的网站怎么防挂马?
做为国内使用最为广泛使用人数最多的cms之一,经常爆出漏洞,每个漏洞的爆出,影响都是一大片,轻则被人挂广告、弹框,重则服务器成为肉机,宝贵数据丢失。那么有什么办法可以提高dedecms的安全性呢? 先来看看原因吧,为什么PHP程序经常出漏洞,其实是由PHP程序本身决定的。 PHP可复用性低,导致程序结构错综复杂,到处是冗余代码,这样不仅利于漏洞的产生,还影响漏洞的修得; PHP程序入门简单且普遍开源,导致很多人都可直接阅读代码,搜寻漏洞;这样便有源源不断的漏洞被发现、被修复、被发现……。 而当前流行的PHP系统习惯用以文件形式做为缓存,这样就需要开放文件的写权限,这无疑成为PHP系统的软肋。 目前针对PHP系统的攻击方式,除了已经很少出现的“注入”攻击外,大部分攻击都是通过系统的某个漏洞,向可写文件里插入一句话木马,以此方式获得shell。  网站安全从来都是服务器配置、文件权限控制和网站程序三者的相互配合,今天主要看看如果对DedeCms网站程序的改进来提高安全性。“可执行的文件不允许被修改,可写文件不允许被访问”这是网站权限控制的根本原则,网站程序在“可写文件不允许被访问”方面可做许多工作。 就拿DedeCMS来说,我们可以在如下几个方式做好保护。 1、改名根目录下的data目录,或者移动到网站目录外面  data目录便是最藏污纳垢的地方,系统经常要往这个目录写数据,这个目录下的任何一个文件都可以通过URL访问到,所以要让浏览器访问不到里面的文件,就需要将此目录改名,或者移动到网站的目录外面去。这些,即使别人通过漏洞往文件里写进了一句话木马,他也找不到此木马所在的文件路径,无法继续展开攻击。因为DedeCMS程序的不合理,导致改名data目录动作会比较大,具体做法如下:  a. 将公开的内容迁移到pub目录(或者其它自定义目录)下,如rss、sitemap、js、enum等,此步骤需要移动文件夹,并修改这些文件的生成路径  b. 修改引用程序目录  搜索替换“DEDEDATA.“/data/” 为 “DEDEDATA.”/”,大概替换五六十个地方; 搜索替换“DEDEDATA.‘/data/” 为 “DEDEDATA.’/”,大概替换五六十个地方; 搜索“/data/”,按具体情况,修改路径类似成为:“$DEDEDATA.“/”(注意include目录和后台管理目录都有data文件夹,不需要修改);  c. 修改data文件夹名称,并修改include/common.inc.php文件里的“DEDEDATA”的值,再在后台系统设置》参数设置里修改模板缓存目录,即可修改完成。以后也可以按照此步骤来更改data文件夹名称。  2、改名“dede”管理目录,并加固  如果把后台隐藏好了,即使别人获得了你的管理员账号、密码,他也无从登录。  在/dede/config.php里,找到如下行:  以下为引用的内容:  //检验用户登录状态   $cuserLogin = new userLogin();  if($cuserLogin->getUserID()==-1) …
2024-11-25 阅读全文 →
FWQ
小程序
图文详解微信公众平台支付开发
本文主要介绍了微信开发中公众号支付的实现方法与步骤。具有很好的参考价值,下面跟着小编一起来看下吧 公众号支付就是在微信里面的H5页面唤起微信支付,不用扫码即可付款的功能。做这个功能首先要明确的就是,只有和商户号mch_id匹配的appid才能成功支付。商户号在注册成功的时候就会将相关信息发送到邮箱里面。而唤起支付的一个关键是靠openid拿到统一下单。而openid是和appid一一对应的。也就是说如果你登录使用的appid不是公众号的appid,得到的openid就无法唤起公众号内的支付(会出现appid和商户号不匹配的错误)。曾经就在这个地方绕了个弯,因为微信的开放平台可以创建网站应用,也有一个appid和appsecreat,也可以在微信里面一键登录。 业务流程 下面是微信的官方流程,看似有点复杂,重点就是要拿到统一下单返回的串,其他按照官方demo基本就能正确,下面说一下几个细节。 创建订单 在调用微信公众号支付之前,首先我们自己要把订单创建好。比如一个充值的订单。主要是先确定下金额再进行下一步。 public JsonResult CreateRecharegOrder(decimal money)  {  if (money <p></p><p><strong>调用统一下单</strong></p><p>订单创建成功之后,页面跳转到支付页面,这个时候就是按照官方的流程去拿prepay_id和paySign,微信的demo中提供了一个js<a href="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">Api</a>Pay的<a href="http://www.php.cn/wiki/60.html" target="_blank">对象</a>。但这个对象需要一个page对象初始化。</p><p class="jb51code"></p><pre class="brush:csharp;">[LoginValid]  public ActionResult H5Pay(string orderNumber)  {  var user = _workContext.CurrentUser;  var order = _paymentService.GetOrderByOrderNumber(orderNumber);  //判断订单是否存在  //订单是否已经支付了  var openid = user.OpenId;  var jsApipay = new JsApiPayMvc(this.ControllerContext.HttpContext);  jsApipay.openid = openid;  jsApipay.total_fee = (int)order.Amount * 100;  WxPayData unifiedOrderResult = jsApipay.GetUnifiedOrderResult();  ViewBag.wxJsApiParam = jsApipay.GetJsApiParameters();//获取H5调起JS API参数   ViewBag.unifiedOrder = unifiedOrderResult.ToPrintStr();…
2024-11-25 阅读全文 →
FWQ
小程序
微信开发之获取公众号配置
本接口将会提供公众号当前使用的自定义菜单的配置,如果公众号是通过api调用设置的菜单,则返回菜单的开发配置,而如果公众号是在公众平台官网通过网站功能发布菜单,则本接口返回运营者设置的菜单配置。 请注意: 1、第三方平台开发者可以通过本接口,在旗下公众号将业务授权给你后,立即通过本接口检测公众号的自定义菜单配置,并通过接口再次给公众号设置好自动回复规则,以提升公众号运营者的业务体验。2、本接口与的不同之处在于,本接口无论公众号的接口是如何设置的,都能查询到接口,而自定义菜单查询接口则仅能查询到使用API设置的菜单配置。3、认证/未认证的服务号/订阅号,以及接口测试号,均拥有该接口权限。4、从第三方平台的公众号登录上来说,该接口从属于消息与菜单权限集。5、本接口中返回的/语音/未临时素材(临时素材每次获取都不同,3天内有效,通过素材管理-获取临时素材接口来获取这些素材),本接口返回的图文消息为永久素材素材(通过素材管理-获取永久素材接口来获取这些素材)。 接口调用请求说明 http请求方式: GET(请使用https协议)api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=ACCESS_TOKEN 返回结果说明 如果公众号是在公众平台官网通过网站功能发布菜单,则本接口返回的自定义菜单配置样例如下: {     "is_menu_open": 1,     "selfmenu_info": {         "button": [             {                 "name": "button",                 "sub_button": {                     "list": [                         {                             "type": "view",                             "name": "view_url",                             "url": "http://www.qq.com"                        },                         {                             "type": "news",                             "name": "news",                             "value":"KQb_w_Tiz-nSdVLoTV35Psmty8hGBulGhEdbb9SKs-o",                            "news_info": {                                 "list": [                                     { …
2024-11-25 阅读全文 →
FWQ
小程序
怎么链接到小程序页面
要在公众号文章使用小程序的某个页面,首先需要在公众号内关联小程序,然后再获取小程序的页面链接插入即可。下面就来介绍下具体的链接方法。 1、在微信公众号后台新建图文消息,选择插入小程序; 2、在选择小程序弹窗界面,填入所获得的小程序页面路径。(推荐学习:) 3、小程序路径默认是小程序首页的页面路径,如果要添加添加其他页面的路径,请按照操作提示获取。 4、在通过上面的方式获得小程序的页面链接后,请检查链接中是否含有 “.html”,如含有 “.html”,须从链接中删除 “.html”,然后再将链接粘贴至弹窗中小程序路径中即可。 PHP中文网,大量编程教程和,欢迎学习! 以上就是怎么链接到小程序页面的详细内容,更多请关注米云其它相关文章!
2024-11-25 阅读全文 →
FWQ
CMS教程
如何创建一个自定义的WordPress搜索插件
如何创建一个自定义的WordPress搜索插件 WordPress作为一个功能强大的内容管理系统,提供了许多强大的默认功能,其中之一就是搜索功能。然而,有时候默认的搜索功能并不能完全满足我们的需求。在这种情况下,我们可以通过创建一个自定义的WordPress搜索插件来实现我们所需的搜索功能。本文将介绍如何创建一个基本的自定义搜索插件,并给出相应的代码示例。 第一步:创建插件文件夹 首先,在WordPress的插件目录中创建一个新的文件夹,用于存放我们的自定义搜索插件。可以将文件夹命名为”custom-search”或者其他你喜欢的名称。 第二步:创建插件主文件 在插件文件夹中创建一个主文件,命名为”custom-search.php”。这是插件的入口点,包括定义插件的基本信息和启用插件所需的函数。 以下是”custom-search.php”的基本代码示例: <?php /* Plugin Name: Custom Search Plugin URI: https://www.example.com Description: This is a custom search plugin for WordPress. Version: 1.0 Author:…
2024-11-25 阅读全文 →
FWQ
小程序
带你体验微信小程序完整开发过程
微信小程序还没正式发布就已经迅速成为大家讨论的焦点,那么大家可能觉得只有收到内测邀请才能体验小程序的开发流程,其实不然,大家都可以体验,下面就带大家一起了解。 下载微信 Web 开发者工具 首先,微信给我们提供了它自己的小程序集成开发工具,只需要到这个页面下载即可: 下载完成后,打开开发者工具,会有一个扫码登录界面。 用你的微信扫码就可以登录进来了, 然后开发者工具会帮我们创建一个默认工程,项目的文件结构如下: 所有的代码编辑以及运行预览都可以在这个开发者工具中进行。接下来咱们看看微信小程序的项目结构。 项目结构 如上图,首先在根目录中有三个文件 app.js, app.json, app.wxss。 其中 app.js 是程序主入口的脚本文件, app.json 是全局配置文件, app.wxss 是小程序的样式表文件。 先来看看 app.json : { "pages":[ "pages/index/index", "pages/logs/logs" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle":"black" } } 登录后复制 这个配置文件中定义了两个节点,…
2024-11-25 阅读全文 →
FWQ
小程序
微信禁止下拉查看URL如何处理
微信下拉时可以查看到url,本身是微信的一种安全策略之一,也是一种用户交互友好的体验;本文主要介绍微信禁止下拉查看url的处理方法,需要的朋友可以参考下,希望能帮助到大家。 效果原理: 微信下拉弹性效果其实是浏览器本身的一种特性,重点就是scroll值的一种体现; 处理策略: 1、直接禁止mobile端的touchmove事件; 这种策略一般适用页面只有一屏不需要下拉情况下使用; var touch1 = function(){   document.querySelector(‘body‘).addEventListener(‘touchmove‘, function (e) {      e.preventDefault();    }); } 登录后复制 弊端:对于大小不同的屏要考虑到内容一屏全部显示,不然2+屏的内容就没有办法看了; 2、禁止touchmove同时判断scroll的位置是否到达顶部; 考虑到下拉时滚动条是否到达顶部 var touch2 = function () {   var lastY;//最后一次y坐标点   var betterY;//每次touch最高点   document.querySelector(‘body‘).addEventListener('touchstart', function(event) {     lastY = event.originalEvent.changedTouches[0].clientY;     betterY = lastY;   });   document.querySelector(‘body‘).addEventListener('touchmove', function(event) {     var y = event.originalEvent.changedTouches[0].clientY;     if(y &gt; betterY){       betterY = y;     }     var st = document.body.scrollTop; //滚动条高度…
2024-11-25 阅读全文 →
FWQ
CMS教程
dedecms中怎么将系统的data目录迁移到web以外目录
中怎么将系统的data目录迁移到web以外目录? data目录是系统缓存和配置文件的目录,一般都有可以读写的权限,只要是能够写入的目录都可能存在安全隐患,很多站长甚至给予这个目录可执行的权限,更是非常危险,所以我们建议将这个data目录搬移出Web可访问目录之外。本篇将介绍如何将data目录搬移出Web访问目录。 推荐学习: 本操作需要用户对DedeCMS系统有较高的了解,如果您感觉自己不太掌握,可以考虑选择官方安全相关服务。 1.将data目录转移到非Web目录 我们这里举例“D:dedecms57”为我们系统的根目录,我们需要将目录下的data文件夹(如图1)迁移要上一级目录(非Web目录),简单的办法直接剪切或者拷贝即可。 我们移动上一级目录中,注意观察文件路径。   2.修改DEDEDATA目录的配置常量 找到系统目录下/include/common.inc.php文件,修改DEDEDATA常量为你的系统目录。   3.配置tplcache缓存文件目录 进入系统后台,在配置中修改tplcache目录为你想对目录。(系统 > 系统基本参数 > 性能选项 > 模板缓存目录)   好了,这样我们就将data目录顺利迁移出去了。 本操作目前仅在V57系统中测试有效,其他版本系统可能需要进行调整。 如果是购买的虚拟主机一般权限都设置好的,要保证data所在的目录有读写权限(与web目录权限相同)。 测试通过。 以上就是中怎么将系统的data目录迁移到web以外目录的详细内容,更多请关注米云其它相关文章!
2024-11-25 阅读全文 →
FWQ
小程序
关于手势解锁的详细介绍
手势解锁是app上常见的解锁方式,相比输入密码方式操作起来要方便许多。下面展示如何基于微信小程序实现手机解锁。最终实现效果如下图:手势解锁整个功能基于canvas实现,首先添加画布组件,并设定样式    1. 简介:手势解锁是app上常见的解锁方式,相比输入密码方式操作起来要方便许多。下面展示如何基于微信小程序实现手机解锁。最终实现效果如下图: 整个功能基于canvas实现,首先添加画布组件,并设定样式 手势解锁实现代码在gesturelock.js中(完整源码地址见末尾)。 初始化 主要设置一些参数,如canvas的长宽,canvas的context,手势锁的个数(3乘3, 4乘4),手势锁的颜色,… 2. 简介:这是 第三届 360 前端星计划 的选拔作业题。600多名学生参与了解答,最后通过了60人。这60名同学完成的不错,思路、代码风格、功能完成度颇有可取之处,不过也有一些欠考虑的地方,比如发现很多同学能按照需求实现完整的功能,但是不知道应当如何 设计开放的 API ,或者说,如何分析和预判产品需求和未来的变化,从而决定什么应当开放,什么应当封装。这无关于答案正确与否,还是和经验有关。 3. 简介:手势解锁是app上常见的解锁方式,相比输入密码方式操作起来要方便许多。这篇文章主要介绍了微信小程序开发教程-手势解锁实例,有兴趣的可以了解一下。 4. 简介:这篇文章主要介绍了微信小程序开发实战教程之手势解锁的相关资料,本文分步骤给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下 【相关问答推荐】: 以上就是关于手势解锁的详细介绍的详细内容,更多请关注米云其它相关文章!
2024-11-25 阅读全文 →
FWQ
CMS教程
WordPress数据库连接错误解决方案大揭秘
WordPress是目前全球最流行的网站建设平台之一,但在使用过程中,有时候会遇到数据库连接错误的问题。这种错误会导致网站无法正常访问,给网站管理员带来困扰。本文将揭秘解决WordPress数据库连接错误的方法,并提供具体的代码示例,帮助读者更快速地解决这一问题。 问题分析 WordPress的数据库连接错误通常是由以下几种原因造成的: 数据库用户名或密码错误 数据库服务器地址错误 数据库名称错误 数据库连接超时 数据库表损坏 解决方案 1. 检查数据库用户名和密码 首先,我们需要确认数据库的用户名和密码是否正确。在WordPress的配置文件wp-config.php中,可以找到数据库连接的相关配置信息。请确保用户名和密码与数据库管理工具中的设置一致。 define('DB_NAME', 'your_database_name'); define('DB_USER', 'your_database_username'); define('DB_PASSWORD', 'your_database_password'); define('DB_HOST', 'localhost'); 登录后复制 2. 检查数据库服务器地址 确保数据库服务器地址配置正确,通常情况下是localhost,如果您使用的是外部数据库服务器,请根据实际情况修改配置。 3. 检查数据库名称 确认数据库名称是否正确,需要与数据库管理工具中创建的数据库名称一致。 4.…
2024-11-25 阅读全文 →