php防止恶意刷新页面的步骤
php防止恶意刷新页面的方法
php防止恶意刷新页面的方法
防止恶意刷页面的原理是:
要求在页面间传递一个验证字符串,
在生成页面的时候 随机产生一个字符串,
做为一个必须参数在所有连接中传递。同时将这个字符串保存在session中。
点连接或者表单进入页面后,判断session中的验证码是不是与用户提交的相同,如果相同,则处理,不相同则认为是重复刷新。
在处理完成后将重新生成一个验证码,用于新页面的生成
PHP实现代码如下:
<?php session_start(); $k=$_GET['k']; $t=$_GET['t']; $allowTime = 1800;//防刷新时间 $ip = get_client_ip(); $allowT = md5($ip.$k.$t); if(!isset($_SESSION[$allowT])) { $refresh = true; $_SESSION[$allowT] = time(); }elseif(time() - $_SESSION[$allowT]>$allowTime){ $refresh = true; $_SESSION[$allowT] = time(); }else{ $refresh = false; } ?>
ie6提交两次我也碰到过,大致是用图片代替submit时,图片上有个submit(),这样会提交两次,如果只是submit钮我没碰到过提交两次的情况。 现在整理一下:
方法基本上前面几位说得差不多
接收的页即2.php分为两部分,一部分处理提交过来的变量,一部分显示页面
处理变量完毕用header( "location: ".$_SERVER[ 'PHP_SELF '])跳转到自身页
本部分要做判断,如果没有post的变量就跳过。当然也可以跳到别的页面。
跳到别的页面返回时会有问题,建议做在一个php文件里。
如果上页穿过来得变量不符合要求可以强制返回 <script> history.go(-1); </script>
只说了一下大体思路,也许高手们不会遇到此类问题,可是并不是每个人都是高手。
if(isset($_POST)) { if(变量不符合要求) <script> history.go(-1); </script> else //操作数据 ... if(操作完成) header( "location: ".$_SERVER[ 'PHP_SELF ']); } <script language= "JavaScript "> <!-- javascript:window.history.forward(1); //--> </script>
也可以利用COOKIE
<?php$c_file="counter.txt"; //文件名赋值给变量if(!file_exists($c_file)) //如果文件不存在的操作{$myfile=fopen($c_file,"w"); //创建文件fwrite($myfile,"0"); //置入“0”fclose($myfile); //关闭文件}$t_num=file($c_file); //把文件内容读入变量if($_COOKIE["date"]!="date(Y年m月d日)") //判断COOKIE内容与当前日期是否一致{$t_num[0]++; //原始数据自增1$myfile=fopen($c_file,"w"); //写入方式打开文件fwrite($myfile,$t_num[0]); //写入新数值fclose($myfile); //关闭文件//重新将当前日期写入COOKIE并设定COOKIE的有效期为24小时setcookie("date","date(Y年m月d日)",time()+60*60*24);}?>
利用session:
主页面文件 index.php 代码:
<?phpsession_start();?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>通过session禁止页面刷新</title><style type="text/css"><!--.style1 {font-size: 14px;font-family: "华文仿宋";font-weight: bold;}.style2 {font-family: "华文琥珀"}--></style></head><body><?php//使用文本存储数据 if($_SESSION[temp]==""){ if(($fp=fopen("counter.txt","r"))==false){ echo "打开文件失败!"; }else{ $counter=fgets($fp,1024); //读取文件中数据 fclose($fp); //关闭文本文件 $counter++; //计数器增加1 $fp=fopen("counter.txt","w"); //以写的方式打开文本文件 fputs($fp,$counter); //将新的统计数据增加1 fclose($fp); } //关闭文//从文本文件中读取统计数据 if(($fp=fopen("counter.txt","r"))==false){ echo "打开文件失败!"; }else{ $counter=fgets($fp,1024); fclose($fp); echo "数字计数器: " .$counter ; } //输出访问次数 $_SESSION[temp]=1; //登录以后,$_SESSION[temp]的值不为空,给$_SESSION[temp]赋一个值1 }else{ echo "<script>alert('您不可以刷新本页!!'); history.back();</script>"; }?><table width="300" border="0" cellpadding="0" cellspacing="0" background="images/141.jpg"><tr> <td height="35" align="center"><span class="style1">通过session禁止页面刷新</span></td></tr><tr> <td height="40" align="center"><span class="style2"> <?php if(($fp=fopen("counter.txt","r"))==false){ echo "打开文件失败!"; }else{ $counter=fgets($fp,1024); fclose($fp); echo "网页访问量: " .$counter ; } //输出访问次数 ?> </span></td></tr><tr> <td height="25" align="center"> </td></tr></table></body></html>
其中:
counter.txt 文件为同目录下的记录登录数文件。
$counter=fgets($fp,1024); 为读取文件中 数值型值的方法(可包含小数点数值)
希望本文所述对大家的PHP程序设计有所帮助。
参考来源:
php防止恶意刷新与刷票的方法
http://www.lai18.com/content/369326.html
延伸阅读
《PHP安全编程系列》系列技术文章整理收藏
PHP安全编程系列收藏夹收藏了有关PHP安全编程方面的知识,对PHP安全编程提供学习参考
1PHP网站常见安全漏洞,及相应防范措施总结
2PHP开发安全问题总结
3php防止网站被刷新的方法汇总
4php防止恶意刷新与刷票的方法
5PHP安全之使用 Register Globals
6PHP安全之用户提交的数据
7PHP安全之魔术引号——什么是魔术引号以及如何使用
8PHP安全之隐藏PHP脚本扩展名
9PHP安全之文件系统安全——Null字符问题
10PHP安全之错误报告
11PHP安全之数据库安全——设计、连接和加密
12PHP安全之数据库安全——SQL注入及预防措施
13PHP安全之文件系统安全及防范措施
14PHP安全之以Apache模式安装时可能遇到的攻击及解决办法
15PHP安全之以CGI 模式安装时可能遇到的攻击及解决办法
16PHP安全之简介和总则
17php防止sql注入之过滤分页参数实例
18php防止站外远程提交表单的方法
19php防止伪造数据从地址栏URL提交的方法
20PHP防止表单重复提交的几种常用方法汇总
21php防止伪造的数据从URL提交方法
22PHP防止post重复提交数据的简单例子
23PHP安全之防止你的源代码或重要配置信息暴露在外
24php防止sql注入示例分析和几种常见攻击正则表达式
25php防止sql注入代码实例
26php防止SQL注入详解及防范
27PHP防止跨域提交表单
28php安全之狗尾续貂
29解析php防止form重复提交的方法
30什么XSS攻击?PHP防止XSS攻击函数
31php防止漏洞策略,创建高性能web
32php安全之直接用$获取值而不$_GET 字符转义
33PHP安全编程:共享主机的源码安全
34PHP安全编程:更优的会话数据安全
35PHP安全编程:会话数据注入
36PHP安全编程:主机文件目录浏览
37PHP安全编程:PHP的安全模式
38PHP安全编程:阻止文件名被操纵
39PHP安全编程:文件包含的代码注入攻击
40PHP安全编程:文件目录猜测漏洞
41PHP安全编程:打开远程文件的风险
42PHP安全编程:shell命令注入
43PHP安全编程:暴力破解攻击
44PHP安全编程:密码嗅探与重播攻击
45PHP安全编程:记住登录状态的安全做法
46PHP安全编程:session劫持的防御
47PHP安全编程:防止源代码的暴露
48PHP安全编程:留心后门URL
49PHP安全编程:session固定获取合法会话
50PHP安全编程:cookie暴露导致session被劫持
51PHP安全编程:防止SQL注入
52PHP安全编程:从URL的语义进行攻击
53PHP安全编程:文件上传攻击的防御
54PHP安全编程:跨站脚本攻击的防御
55PHP安全编程:跨站请求伪造CSRF的防御
56PHP安全编程:关于表单欺骗提交
57PHP安全编程:表单与数据安全
58PHP安全编程:不要暴露数据库访问权限
59PHP安全编程:HTTP请求欺骗
60PHP安全编程:对输出要进行转义
61PHP安全编程:过滤用户输入
62PHP安全编程:网站安全设计的一些原则
63PHP安全编程:不要让不相关的人看到报错信息
64PHP安全编程:register_globals的安全性
65PHP安全编程:可用性与数据跟踪
66php防止xss攻击的方法
67discuz的php防止sql注入函数
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 3楼sinat_26360227昨天 16:08
- sssssssssgy
- 2楼wowkk昨天 14:05
- hello,请问有兴趣来广州工作吗?
- 1楼ndsckm昨天 09:33
- 我想知道一般大型网站是怎么处理的

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

springboot 프로젝트 프로덕션 세션아웃 시간 초과에서 문제가 발견되었습니다. 문제 설명: 테스트 환경에서는 세션아웃 구성이 적용되었는지 확인하기 위해 application.yaml을 변경하여 세션아웃을 구성했습니다. , 프로덕션 환경에 도착하면 만료 시간이 8시간으로 직접 설정되었습니다. 그런데 정오에 고객으로부터 프로젝트 만료 시간이 짧게 설정되어 있다는 피드백을 받았습니다. 30분 동안 아무 작업도 수행하지 않으면 세션이 만료되어 반복 로그인이 필요합니다. 개발 환경 처리 문제를 해결합니다. springboot 프로젝트에는 Tomcat이 내장되어 있으므로 프로젝트의 application.yaml에 구성된 세션 아웃이 효과적입니다. 프로덕션 환경: 프로덕션 환경 릴리스는 다음과 같습니다.

세션 실패는 일반적으로 세션 수명 만료 또는 서버 종료로 인해 발생합니다. 해결 방법은 다음과 같습니다. 1. 세션 수명을 연장합니다. 3. 쿠키를 사용합니다. 4. 세션 관리 미들웨어를 사용합니다.

새로 고침 후 PHP 세션이 사라지는 문제에 대한 해결 방법: 1. "session_start();"를 통해 세션을 엽니다. 2. 모든 공개 구성을 PHP 파일에 작성합니다. 3. 변수 이름은 배열 첨자와 같을 수 없습니다. 4. phpinfo에서 세션 데이터의 저장 경로를 확인하고 파일 디렉터리의 sessio가 성공적으로 저장되었는지 확인합니다.

PHPSession의 도메인 간 문제 해결 프런트엔드와 백엔드 분리 개발에서 도메인 간 요청이 표준이 되었습니다. 도메인 간 문제를 처리할 때 일반적으로 세션 사용 및 관리가 포함됩니다. 그러나 브라우저 원본 정책 제한으로 인해 기본적으로 도메인 간에 세션을 공유할 수 없습니다. 이 문제를 해결하려면 도메인 간 세션 공유를 달성하기 위한 몇 가지 기술과 방법을 사용해야 합니다. 1. 도메인 간 세션을 공유하기 위한 쿠키의 가장 일반적인 사용

세션 PHP의 기본 만료 시간은 1440초(24분)입니다. 즉, 클라이언트가 24분 이상 새로 고치지 않으면 사용자가 브라우저를 닫으면 현재 세션이 만료되고 세션이 종료됩니다. 세션이 더 이상 존재하지 않습니다.

문제: 오늘 프로젝트에서 설정 시간 초과 문제가 발생했으며 SpringBoot2의 application.properties에 대한 변경 사항이 적용되지 않았습니다. 해결 방법: server.* 속성은 SpringBoot에서 사용하는 내장 컨테이너를 제어하는 데 사용됩니다. SpringBoot는 ServletWebServerFactory 인스턴스 중 하나를 사용하여 서블릿 컨테이너의 인스턴스를 생성합니다. 이러한 클래스는 server.* 속성을 사용하여 제어되는 서블릿 컨테이너(tomcat, jetty 등)를 구성합니다. 애플리케이션이 Tomcat 인스턴스에 war 파일로 배포되면 server.* 속성이 적용되지 않습니다. 적용되지 않습니다.

1. 세션 기반 SMS 로그인 구현 1.1 SMS 로그인 흐름도 1.2 SMS 인증코드 전송 구현 프런트엔드 요청 설명: 요청 방법 설명 POST 요청 경로/사용자/코드 요청 매개변수 전화(전화번호) 반환 값 백엔드 인터페이스 없음 구현: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1인 경우 휴대폰 번호를 확인합니다.
