简述

在网站开发中使用频率最高的工具之一便是验证码,验证码在此也是多种多样,不过简单的图片验证码已经可以被机器识别,极验验证码提供了一个安全可靠的滑动验证码体系,让网站开发更加安全。

先感受一下这种验证码的魅力:极验

接入极验验证码的过程并没有想象中的那么简单,如果想在Laravel 5中使用,可以使用Laravel 5的极验验证码包LaravelGeetest,支持 Laravel 5.0 及以上版本。

地址:https://github.com/Germey/LaravelGeetest

建议阅读原项目的README文件,最新的更新都会在README中说明,而且用法介绍是最全面的。

下面简单介绍一下该工具包的使用。

注册极验账号

首先需要到极验网站注册账号,然后新建一个应用,获取到 ID 和 KEY,留作备用,后台管理页面如下。

安装

在项目地址输入命令

$ composer require germey/geetest

就可以完成该包的安装

或者可以在 composer.json 的 require 中添加

"germey/geetest": "~2.0"

然后执行

$ composer update

同样可以完成该包的安装。

配置

注册 ServiceProvider,在 config/app.php 的 providers 中添加

Germey\Geetest\GeetestServiceProvider::class

在 aliases 中添加

'Geetest' => Germey\Geetest\Geetest::class

然后执行

$ php artisan vendor:publish

会生成一个配置文件,config/geetest.php 和视图文件views/vendor/geetest,视图文件中你可以自定义配置,比如修改一下验证失败后的alert函数,修改为你想要的提示toast等。

使用

首先把刚才拿到的 ID 和 KEY 配置到 .env 文件中,因为这两个算私密内容,配置到 .env 文件中可以保证安全性。在 .env 中写入如下两行。

GEETEST_ID=0f1097bef7xxxxxx9afdeced970c63e4
GEETEST_KEY=c070f0628xxxxxxe68e138b55c56fb3b

其中 ID 和 KEY 换成你自己的。

然后,在任意的视图里,我们只需要调用

{!! Geetest::render() !!}

就可以得到验证码了。

比如我们最常用的表单里

<form action="/" method="post">
<input name="_token" type="hidden" value="{{ csrf_token() }}">
<input type="text" name="name" placeholder="name">
{!! Geetest::render() !!}
<input type="submit" value="submit">
</form>

通过如上代码就可以完成验证码的生成了,样例如下:

另外还可以指定验证码的另外两种样式。

{!! Geetest::render('embed') !!}
{!! Geetest::render('popup') !!}

以上两个方法分别会生成嵌入式和弹出式验证码。如果没有参数,默认是浮动式。

关于这几种样式,可以参考官网

这样,就能保证必须完成验证码操作才能提交表单。

好,至此,你就可以完成最基础的验证码配置了。

服务端验证

如果你完成了上面的部分,那么恭喜你已经成功了一大半了,可以到此为止,不过如果想更加安全,请继续往下看。

在此是服务端二次验证,在上面讲的方法是客户端的验证,但是这并不能代表绝对安全,一些恶意用户依然可以通过操作JS完成表单的提交,所以服务端我们需要再次验证一下。

在表单提交的时候,如果你用了极验,那么就会额外提交三个字段,分别是 geetest_challengegeetest_validategeetest_seccode, 利用这三个字段,我们可以重新核对操作是否合法。

在这里这个包又做了封装,提供了一条验证规则。

所以验证时我们只需要利用验证规则即可。

use Illuminate\Http\Request;

class BaseController extends Controller
{
/**
* @param Request $request
*/
public function postValidate(Request $request)
{
$result = $this->validate($request, [
'geetest_challenge' => 'geetest',
], [
'geetest' => config('geetest.server_fail_alert')
]);
if ($request) {
return 'success';
}
}
}

利用 validate 方法,通过验证其中一个字段 geetest_challenge, 验证规则 geetest 就可以完成服务端的验证。这样就更保证了安全性。

在这里注意,由于多提交了几个字段,如果想执行 ORM 的批量插入修改操作时,记得在 Model 里面屏蔽这几个字段

protected $guarded = ['geetest_challenge', 'geetest_validate', 'geetest_seccode'];

通过以上方法,就完成了服务端验证。

关于更多使用方法,可以参考README

语言设置

验证码提供五种语言,简体中文,繁体中文,英文,日文,韩文。

可以通过 config/geetest.php 中设置 lang 字段。

  • zh-cn (简体中文)
  • zh-tw (繁体中文)
  • en (英文)
  • ja (日文)
  • ko (韩文)

修改提示语

在这里有两个提示语,client_fail_alert 和 server_fail_alert,分别是前端和后台(客户端和服务器)两边的提示语,可以通过设置 config/geetest.php 设置。

摘要:https://laravelacademy.org/post/5291.html

极验(Geetest) Laravel 5 集成开发包,让验证更安全的更多相关文章

  1. 关于xampp 集成开发包电脑重启mysql无法启动的问题

    关于xampp 集成开发包电脑重启mysql无法启动的问题. 在做php开发时,安装过xampp,也不知道是版本老了还是什么问题,总是出现当天晚上下班关机,第二天上班mysql不能启动,在网上查找些资 ...

  2. 破解极验(geetest)验证码

      破解极验(geetest)验证码 这是两年前的帖子: http://www.v2ex.com/t/138479 一个月前的破解程序,我没用过 asp.net ,不知道是不是真的破解了, demo ...

  3. 对极验geetest滑块验证码图片还原算法的研究

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  4. laravel 极验(Geetest) 让验证更安全。

    整理的有些仓促,在9月15号之后会更新更加详细更加全面的文档,供给大家参考,学习! 1.简述 在网站开发中使用频率最高的工具之一便是验证码,验证码在此也是多种多样,不过简单的图片验证码已经可以被机器识 ...

  5. Django中使用极验Geetest滑动验证码

    一,环境部署 1.创建一个django测试项目 此处省略... 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github ...

  6. 爬虫进阶教程:极验(GEETEST)验证码破解教程

    摘要 爬虫最大的敌人之一是什么?没错,验证码!Geetest作为提供验证码服务的行家,市场占有率还是蛮高的.遇到Geetest提供的滑动验证码怎么破?授人予鱼不如授人予渔,接下来就为大家呈现本教程的精 ...

  7. 极验(geetest)验证码

    最近在做项目的时候,需要用到登录验证,在网上看到了一个很不错的验证插件,在此记录一下使用流程. 极限验证码   官网:http://www.geetest.com/,到GitHub下载服务端代码htt ...

  8. 极验反爬虫防护分析之slide验证方式下图片的处理及滑动轨迹的生成思路

    本文要分享的内容是去年为了抢鞋而分析 极验(GeeTest)反爬虫防护的笔记,由于篇幅较长(为了多混点CB)我会按照我的分析顺序,分成如下四个主题与大家分享: 极验反爬虫防护分析之交互流程分析 极验反 ...

  9. 在ASP.NET MVC项目中使用极验验证(geetest)

    时间 2016-03-02 18:22:37 smallerpig 原文  http://www.smallerpig.com/979.html 主题 ASP.NET MVC   geetest开发体 ...

随机推荐

  1. 构建openssl debug版

    一.简介 作为一种安全协议,openssl囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用. 参考: http://www.linuxidc ...

  2. NOIP 2016 游记

  3. Laravel 的 Events(事件) 及 Observers(观察者)

    你是否听说过单一职责原则(single responsibility principle)?我希望是的.它是程序设计的基本原则之一,它基本上的意思就是,一个类有且只有一个职责.换句话说,一个类必须且只 ...

  4. 如何在win 2008 server和win 7上add web site

    在 windows 2008  server 英文版的操作系统上,通过桌面上的 Computer 右键选择 Manage ,打开 Server Manager,选中左侧资源树中的Roles 在上图右侧 ...

  5. [BAT]cmd命令之 cd /d %~dp0

    cd /d %~dp0是什么意思啊?批处理文件中的一条语句意思是 更改当前目录为批处理本身的目录 有些晕吧?不急,我举例 比如你有个批处理a.bat在D:\qq文件夹下 a.bat内容为 cd /d ...

  6. Android系统root破解原理分析

    http://dengzhangtao.iteye.com/blog/1543494 root破解过程的终极目标是替换掉系统中的su程序.但是要想替换掉系统中su程序本身就是需要root权限的,怎样在 ...

  7. MySQL之练习题5

    .将所有的课程的名称以及对应的任课老师姓名打印出来,如下: SELECT cname,tname FROM course INNER JOIN teacher WHERE course.teacher ...

  8. 551. Student Attendance Record I

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  9. 2018.10.23 NOIP模拟 行星通道计划(bit)

    传送门 卡常题. 成功卡掉了作死写树套树的zxy. 然而对我的二维bit无能为力. 直接维护两棵bit. bit1[i][j]bit1[i][j]bit1[i][j]表示左端点小于等于iii,右端点小 ...

  10. TopK排序

    利用快速排序实现TopK排序 //返回支点的下标 int partition(int *arr, int low, int high) { //选取第一个元素为支点 int pivot = arr[l ...