MySQL数据库之[实例]利用php+mysql完成shell脚本的授权验证
小标 2019-06-24 来源 : 阅读 1619 评论 0

摘要:本文主要向大家介绍了MySQL数据库之[实例]利用php+mysql完成shell脚本的授权验证 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之[实例]利用php+mysql完成shell脚本的授权验证 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

MySQL数据库之[实例]利用php+mysql完成shell脚本的授权验证

写在前面:

作者最近这几天写了一个shell脚本准备进行出售,由于单独出售利润不大,决定将脚本按照IP进行授权,出售授权,这样可以增加利润。

授权原理:

客户端运行shell脚本时,首先会利用curl从服务器获取两个数据,进行比对,如果两个数据相同,则表明此IP没有被授权,否则则授权成功。

这里说下为什么要这样写呢,其实起初我也想过很多方案,但后来都被我否决,主要原因就是有偶然性。在某种情况下(比如断网)会触发一些意外结果。而此方案当断网是返回的应该是相同值,间接避免了bug的产生。

服务端(验证端的编写)

原理:服务端利用php编写,共有两个文件.

shell.php

授权核心代码,客户端访问时程序会对客户端IP进行判断,如果该IP存在数据库中,则返回此IP位于数据库第几行,不存在则返回客户端IP

代码如下:

<?php
//此函数用于获取IP
function get_real_ip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
//定义一个IP变量
$ipc=get_real_ip();
//连接MYSQL查询
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
 mysql_select_db("test", $con);
//获取结果
$result = mysql_query("SELECT `ID`, `IP` FROM `shell_users` WHERE IP='$ipc' limit 1;",$con);
//如果有记录则输出记录在数据库中的行数并退出
while($row = mysql_fetch_array($result))
  {
  echo $row['ID'];
  mysql_close($con);
  exit;
  }
//无记录直接显示IP
echo "$ipc";
mysql_close($con);
?>

getip.php

没卵用,仅仅提供客户端IP与shell.php返回的数值进行比对.

代码如下:

<?php
function get_real_ip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
$ipc=get_real_ip();
echo $ipc;
?>

(由于本人只了解过PHP,所以代码写的有点乱,谅解下)同时获取IP函数来自网络

这边说下数据库的结构

比较简单

仅仅两行!

客户端的编写:

#!/bin/bash
echo "Loading... please wait..."
#安装curl
yum -y install curl >/dev/null
#通过curl获取授权
这边说下curl的-x是用来指定IP,防止用户改hosts文件屏蔽网址
(具体有啥用我也不知道,反正能用就行)
IP=$(curl //127.0.0.1/getip.php -x127.0.0.1:80)
ID=$(curl //127.0.0.1/shell.php -x127.0.0.1:80)
#输出IP
echo "Your IP Is:$IP"
#进行判断
if [[ $ID == $IP ]]; then
    echo "IP未授权"
    exit
else
    echo "你的IP正确"
fi

由于shell脚本可以直接打开

所以这里使用shc加密

shc的使用具体可以看我博文

这样弄完之后就可以给用户使用了。


本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程