Login
网站首页 > 文章中心 > 其它

php防恶意提交_php恶意函数

作者:小编 更新时间:2023-09-23 08:55:26 浏览量:471人看过

本文目录一览:

①.、dede 自定义表单如何防止别人恶意提交

②.、php避免form表单重复提交

③.、PHP如何做好最基础的安全防范

dede 自定义表单如何防止别人恶意提交

打开plus下diy.php文件

找到

if(!is_array($diyform))

{

showmsg('自定义表单不存在',?'-1');

exit();

}

再其下添加

//检测游客是否已经提交过表单

if(isset($_COOKIE['VOTE_MEMBER_IP']))

if($_COOKIE['VOTE_MEMBER_IP']?==?$_SERVER['REMOTE_ADDR'])

ShowMsg('您已经填写过表单啦','-1');

}?else?{

此方法能够仿制初级用户重复提交,但是如果清除cookie的话还可以可以提交的.

php避免form表单重复提交

php避免form表单重复提交

下面的情况就会导致表单重复提交:

使用浏览器后退按钮重复之前的操作,导致重复提交表单.

使用浏览器历史记录重复提交表单.

浏览器重复的HTTP请求.

网页被恶意刷新.

下面是几种解决办法:

form name=form1 method="POST" action="/" target=_blank

p

input type="button" value="提交" onclick="javascript:{this.disabled=true;document.form1.submit();}"

/p

/form

二:利用session

在session中?放一个特殊标志.当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里.接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据.

如果发现表单提交里没有有效的.标志串,这说明表单已经被提交过了,忽略这次提交.

这使你的web应用有了更高级的XSRF保护

加载提交的页面时候,生成一个随机数,

$code = mt_rand(0,1000000);

存储在表单的隐藏输入框中:

input type="hidden" name="code" value=""

在接收页面的PHP代码如下:

php

session_start();

if(isset($_POST['code'])) {

if($_POST['code'] == $_SESSION['code']){

// 重复提交表单了

}else{

$_SESSION['code'] =$_POST['code']; //存储code

}?

三:利用cookies

原理和session差不多,但是cookies一旦用户浏览器禁用cookies,这功能就失效了

if(isset($_POST['submit'])){

header("Location:".$_SERVER[PHP_SELF]);exit();

if(isset($_COOKIE["tempcookie"])){

setcookie("tempcookie","",0);echo "您已经提交过表单";

四:利用header函数跳转

if (isset($_POST['submit'])) {

header('location:success.php');//处理数据后,转向到其他页面

五:利用数据库来添加约束

直接在数据库里添加唯一约束或创建唯一索引,一旦发现用户重复提交了,直接抛出警告或者提示,或者只处理第一次提交的数据,这是最直接有效的方法,要求前期的数据库设计和架构要考虑周全.

六:Post/Redirect/Get模式

if (isset($_POST['action']) $_POST['action'] == 'submitted') {

//处理数据,如插入数据后,立即转向到其他页面

header('location:submits_success.php');

;

PHP如何做好最基础的安全防范

PHP如何做好最基础的安全防范

php给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,PHP如何做好最基础的安全防范呢?下面我为大家解答一下,希望能帮到您!

当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现.PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发者来说.每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的考虑,例如开发一个论坛或者是一个购物车等.

安全保护一般性要点

不相信表单

对于一般的Javascript前台验证,由于无法得知用户的行为,例如关闭了浏览器的javascript引擎,这样通过POST恶意数据到服务器.需要在服务器端进行验证,对每个php脚本验证传递到的数据,防止XSS攻击和SQL注入.

不相信用户

要假设你的网站接收的每一条数据都是存在恶意代码的,存在隐藏的威胁,要对每一条数据都进行清理

关闭全局变量

在php.ini文件中进行以下配置:

register_globals = Off

如果这个配置选项打开之后,会出现很大的安全隐患.例如有一个process.php的脚本文件,会将接收到的数据插入到数据库,接收用户输入数据的表单可能如下:

这样,当提交数据到process.php之后,php会注册一个$username变量,将这个变量数据提交到process.php,同时对于任何POST或GET请求参数,都会设置这样的变量.如果不是显示进行初始化那么就会出现下面的问题:

// Define $authorized = true only if user is authenticated

if

(authenticated_user()) {

$authorized = true;

此处,假设authenticated_user函数就是判断$authorized变量的值,如果开启了register_globals配置,那么任何用户都可以发送一个请求,来设置$authorized变量的值为任意值从而就能绕过这个验证.所有的这些提交数据都应该通过PHP预定义内置的全局数组来获取,包括$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,其中$_REQUEST是一个$_GET/$_POST/$_COOKIE三个数组的联合变量,默认的顺序是$_COOKIE、$_POST、$_GET.

推荐的安全配置选项

error_reporting设置为Off:不要暴露错误信息给用户,开发的时候可以设置为ON

safe_mode设置为Off

register_globals设置为Off

将以下函数禁用:system、exec、passthru、shell_exec、proc_open、popen

open_basedir设置为 /tmp ,这样可以让session信息有存储权限,同时设置单独的网站根目录expose_php设置为Offallow_url_fopen设置为Offallow_url_include设置为Off

SQL注入攻击

对于操作数据库的SQL语句,需要特别注意安全性,因为用户可能输入特定语句使得原有的SQL语句改变了功能.类似下面的例子:

$sql ="select * from pinfo where product = '$product'";

那么最终SQL语句就变成了如下的◆样子:

DROP pinfo;

SELECT 'FOO'

这样就会变成三条SQL语句,会造成pinfo表被删除,这样会造成严重的后果.这个问题可以简单的使用PHP的内置函数解决:

$sql = 'Select * from pinfo where product = '"' mysql_real_escape_string($product) . '"';

防止基本的XSS攻击

function transform_HTML( $string , $length null) { // Helps prevent XSS attacks

// Remove dead space.

$string = trim( $string );

// Prevent potential Unicode codec problems.

// HTMLize HTML-specific characters.

$string = htmlentities( $string , ENT_NOQUOTES);

$string = str_replace ( "#" , "#" , $string );

$string = str_replace ( "%" , "%" , $string );

$length = intval ( $length );

if ( $length 0) {

$string = substr ( $string , 0, $length );

}return $string ;

这样浏览器渲染的结果其实是:

a href = ""

SCRIPT Dosomethingmalicious

这样就达到了攻击的目的.为了防止这种情况,需要在transform_HTML函数的基础上再将#和%转换为他们对应的实体符号,同时加上了$length参数来限制提交的数据的最大长度.

使用SafeHTML防止XSS攻击

上述关于XSS攻击的防护非常简单,但是不包含用户的所有标记,同时有上百种绕过过滤函数提交javascript代码的方法,也没有办法能完全阻止这个情况.目前,没有一个单一的脚本能保证不被攻击突破,但是总有相对来说防护程度更好的.一共有两个安全防护的方式:白名单和黑名单.其中白名单更加简单和有效.一种白名单解决方案就是SafeHTML,它足够智能能够识别有效的HTML,然后就可以去除任何危险的标签.这个需要基于HTMLSax包来进行解析.安装使用SafeHTML的方法:

②.、将文件放入服务器的classes 目录,这个目录包含所有的SafeHTML和HTMLSax库

③.、在自己的脚本中包含SafeHTML类文件

④.、建立一个SafeHTML对象

⑤.、使用parse方法进行过滤

php/* If you're storing the HTMLSax③php in the /classes directory, along

// Define some sample bad code.

$data = This data would raise an alert

" ;// Create a safehtml object.$safehtml = new safehtml();// Parse and sanitize the data.$safe_data = $safehtml -parse( $data );// Display result. echo 'The sanitized data is ' . $safe_data ;

SafeHTML并不能完全防止XSS攻击,只是一个相对复杂的脚本来检验的方式.

使用单向HASH加密方式来保护数据

php$data = "Stuff you want encrypted" ;

$key = "Secret passphrase used to encrypt your data" ;

}function decrypt( $data , $key ,$cipher , $mode ) {// Decrypt data

mcrypt函数需要以下信息:

①.、待加密数据

②.、用来加密和解密数据的key

③.、用户选择的加密数据的特定算法(cipher:

, MCRYPT_DES

④.、用来加密的模式

⑤.、加密的种子,用来起始加密过程的数据,是一个额外的二进制数据用来初始化加密算法

php防恶意提交_php恶意函数

以上就是土嘎嘎小编为大家整理的php防恶意提交相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章