继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

[实例]利用php+mysql完成shell脚本的授权验证

BIG阳
关注TA
已关注
手记 429
粉丝 70
获赞 457

写在前面:

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

授权原理:

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

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

服务端(验证端的编写)

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

shell.php

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

代码如下:


<?php//此函数用于获取IPfunction 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;  }//无记录直接显示IPecho "$ipc";mysql_close($con);?>

getip.php

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

代码如下:


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

由于shell脚本可以直接打开

所以这里使用shc加密

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

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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP