php破解验证码
A. 为什么php写的验证码会被暴力破解,如何能做到不被暴力破解呢还有验证码一定要依赖COOKIE和SESSION吗
验证码这个东西本身就是一个防止暴力破解的机制,用于区分机器和人的,跟用什么写的是没有关系的。你可以设置以下逻辑来防止验证码被破解:
验证码更新机制,错误输入后换一个验证码
IP封锁机制,错误输入五次验证码后锁死相关IP
B. PHP中模拟登录的验证码问题应该如何解决
基本思路:
首先获取一个cookies值,再带着这个cookies去获取验证码图片,你再带着验证码值和登录数据去模拟post登录。下面是一个模拟获取验证码的。
这里忽略获取cookies的过程。注意文件为UTF-8无BOM格式
?php
header('Content-Type:image/png');
$url="http://hbyw.e21.e.cn/global/gd.php";//图片链接
$ch=curl_init();
//Cookie:PHPSESSID=
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_COOKIE,'PHPSESSID=');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,0);//忽略超时
curl_setopt($ch,CURLOPT_NOBODY,false);
$str=curl_exec($ch);
curl_close($ch);
C. 这个PHP后台登陆页面,去除验证码,要删除那些代码可以正常登陆!
将这个文件中的35-37行删掉,可以在提交前不再提示“验证码不能为空”
将这个文件中的121-123行删掉,可以不显示验证码输入框和验证码图片,删掉121-123之后为了避免js报错,需要删除 27行,还需要删除47行中的 ,"verify":verify.value
然后还需要修改 第46行 U(ACTION_NAME) 这个提交文件内的代码
D. php curl 模拟登陆的问题验证码怎么破
网络技术飞速发展,红黑较量也是日新月异,我们要想取得长久的胜利,就不能得过且过,想绕过一切验证码,是不可能实现的。
建议:
用curl模拟登陆页面获取验证码图片,手工录入
当然了,如果后台是你自己的就不要验证码就OK了,但这是个 个例,不是泛指,希望能帮到你。
E. php你的验证码安全码
验证码的作用主要有防止暴力破解,防止恶意灌水,防止自动提交等,在这里我就不多说了。验证码的类型也有数字、字母等,甚至厉害点的还有中文的。但是不管你的验证码多么厉害,只要你在表单验证中存在如下的失误,你的验证码就形同虚设!
验证码的一般思路,就是每次登陆的地方访问一个脚本文件,该文件生成含验证码的图片并将值写入到Session里,提交的时候验证登陆的脚本就会判断提交的验证码是否与Session里的一致。
问题出现了,在登陆密码错误之后,我们不去访问生成验证图片的文件,那么如果Session中的验证码没有被清空,此时验证码就是跟上次的一样,辛辛苦苦构建的验证码机制就形同虚设了。
下面我们先来看一段有问题的代码:
登陆部分:
CODE:
<tr>
<td>管理员姓名:
F. php验证码解析
同学 具体那看不明白请说
东西太多 不能一一解释
<?php
//产生随机变形随机码
session_start();;/* 开启SESSION 以便其他页面对验证码进行验证*/
$authnum=random(4);//种子
Header("Content-type: image/PNG"); //古例,改不得
$im = imagecreate(55,18); //imagecreate() 新建图像,大小为 x_size 和 y_size 的空白图像。
$red = ImageColorAllocate($im, 52,24,128); //设置背景颜色
$white = ImageColorAllocate($im, 65,223,224);//设置文字颜色
$gray = ImageColorAllocate($im, 0,0,0); //设置杂点颜色
imagefill($im,55,18,$red);
for ($i = 0; $i < strlen($authnum); $i++)
{
imagestring($im, 6, 13*$i+4, 1, substr($authnum,$i,1), $white);
}
for($i=0;$i<50;$i++) imagesetpixel($im, rand()%55 , rand()%48 , $gray); //加入干扰象素
ImagePNG($im); //以 PNG 格式将图像输出到浏览器或文件
ImageDestroy($im);//销毁一图像
$authnum=strtolower($authnum);
$_SESSION['code']=$authnum /* 把验证码的内容赋值给SESSION 以便其他页面验证*/
//产生随机数的函数
function random($length) /* 产生随机数字或者字母 */
{
$hash = '';
$chars = '';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash; //又来
}
?>
G. php网页的密码验证绕过求助(简单代码)
初步判断,密码为yixiwangmengsicengjian
原理
if($LoginPassword!=''){ 表示$LoginPassword不能为空
而$LoginPassword 的值来自于$LoginPassword=$UserList[$LoginUser];
而$UserList这个数组只有一个元素, admin
那$UserList[$LoginUser] 只能是$UserList['admin'];
而很明显$UserList['admin'] 的值就是 yixiwangmengsicengjian
表单方面, 一个输入框, 一个密码框, 输入框的name属性是User 密码框的name属性是 Password
H. 如何用PHP生成验证码
php生成验证码,php验证码,php怎样生成验证码?
工具/原料
这个验证码较实用,大家可以应用到项目中。
方法/步骤
1.
<?php
/*设置文件头为图片输出*/
Header("Content-type:image/JPEG");
/*调用生成验证码函数*/
$checkcode=make_rand(4);
/**
*生成验证码字符
*@paramint$length验证码字符长度
*@returnstring
*/
functionmake_rand($length="32"){
$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$result="";
for($i=0;$i<$length;$i++){
$num[$i]=rand(0,25);
$result.=$str[$num[$i]];
}
return$result;
}
2.
/*调用输出验证码图片函数*/
getAuthImage($checkcode,160,40);
/**
*生成验证码图片
*@paramstring$text验证码字符
*/
functiongetAuthImage($text,$w,$y){
/*设置图片的宽度和高度*/
$im_x=$w;
$im_y=$y;
/*创建图片*/
$im=imagecreatetruecolor($im_x,$im_y);
$text_c=ImageColorAllocate($im,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
$tmpC0=mt_rand(100,255);
$tmpC1=mt_rand(100,255);
$tmpC2=mt_rand(100,255);
$buttum_c=ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2);
imagefill($im,16,13,$buttum_c);
3.
/*字体文件*/
$font='t1.ttf';
for($i=0;$i<strlen($text);$i++)
{
$tmp=substr($text,$i,1);
$array=array(-1,1);
$p=array_rand($array);
$an=$array[$p]*mt_rand(1,10);//角度
$size=28;
imagettftext($im,$size,$an,15+$i*$size,35,$text_c,$font,$tmp);
}
/*将字符写入文件中*/
$distortion_im=imagecreatetruecolor($im_x,$im_y);
imagefill($distortion_im,16,13,$buttum_c);
for($i=0;$i<$im_x;$i++){
for($j=0;$j<$im_y;$j++){
$rgb=imagecolorat($im,$i,$j);
if((int)($i+20+sin($j/$im_y*2*M_PI)*10)<=imagesx($distortion_im)&&(int)($i+20+sin($j/$im_y*2*M_PI)*10)>=0){
imagesetpixel($distortion_im,(int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.1)*4),$j,$rgb);
}
}
}
4.
/*干扰元素点的数量*/
$count=160;
/*创建干扰元素点*/
for($i=0;$i<$count;$i++){
$randcolor=ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagesetpixel($distortion_im,mt_rand()%$im_x,mt_rand()%$im_y,$randcolor);
}
/*创建干扰线条*/
$rand=mt_rand(5,30);
$rand1=mt_rand(15,25);
$rand2=mt_rand(5,10);
for($yy=$rand;$yy<=+$rand+2;$yy++){
for($px=-80;$px<=80;$px=$px+0.1)
{
$x=$px/$rand1;
if($x!=0)
{
$y=sin($x);
}
$py=$y*$rand2;
imagesetpixel($distortion_im,$px+80,$py+$yy,$text_c);
}
}
5.
/*以PNG格式将图像输出到浏览器*/
ImagePNG($distortion_im);
/*销毁图像*/
ImageDestroy($distortion_im);
ImageDestroy($im);
I. php模拟登陆教务系统,如何绕过验证码,是正方的说,
把验证码功能去了不久结了,如果你想保留验证但又不想自己登陆的时候输入验证码,那你就判断一下,哪个账号登陆地时候就不执行验证码验证功能。
J. 关于php网站后台加密的破解
常规的网站破解是通过SQL入注来破解,如果程序员注重了SQL入注那这个方法就很难行得通。二者就是采用暴力猜密码的方法,如果登录设置了验证码难度就会很大。
破解这东西还是需要自己花很多时间和精力去琢磨滴。