摘要:本文通过实例介绍了PHP跨站攻击的原理和防范方法。 分享给大家,供大家参考。 具体方法分析如下:借助程序中的一些细节或者bug进行跨站攻击,然后...
本文通过实例介绍了PHP跨站攻击的原理和防范方法。 分享给大家,供大家参考。 具体方法分析如下:
跨站攻击是借助程序中的一些细节或者bug来进行的,那么我们怎样才能避免跨站攻击呢? 下面是一个避免跨站攻击的例子,希望对您有所帮助。
复制代码代码如下:
通过在表单中包含验证码,您实际上消除了跨站点请求伪造攻击的风险。此流程可以以任何需要执行操作的形式使用
当然,最好将token存储在session中,这里只是一个简单的例子
简单分析:
令牌防御攻击也称为令牌。 当用户访问该页面时,我们会生成一个随机令牌来保存会话和表单。 如果我们拿到的token和用户提交时的session不一样,他可以提交并重新输入提交的数据。
希望这篇文章对您的PHP编程有所帮助。
本文的例子总结了PHP如何获取根域名,分享给大家,供大家参考。 具体实现如下:
如果只是获取当前访问你页面的域名,我们只需要使用php中的函数HTTP_HOST就可以完成。 如果要提取url的根域名,需要正则。 下面我们来看几个具体的例子。
如果是获取当前域名就特别简单:
复制代码代码如下:
实施例1
复制代码代码如下: function getUrlRoot($url){
#添加背部和尾部
$url = $url 。 “/”;
#判断域名
preg_match("/((w*)://)?w*.?([w|-]*.(com.cn|net.cn|gov.cn|org.cn|com|net|cn|org |亚洲|电话|手机|我|电视|商业|抄送|名称|信息))
//", $url, $ohurl);
#判断IP
if($ohurl[3] == ''){
preg_match("/((d+.){3}d+)//", $url, $ohip);
返回$ohip[1];
返回 $ohurl[3];
实施例2
复制代码代码如下: /**
* 获取根域名
* @param 类型 $domain 域名
* @return string 返回根域名
*/
函数 GetUrlToDomain($domain) {
$re_domain = '';
$domain_postfix_cn_array = array("com", "net", "org", "gov", "edu", "com.cn", "cn");
$array_domain = 爆炸(".", $domain);
$array_num = 计数($array_domain) - 1;
if ($array_domain[$array_num] == 'cn') {
if (in_array($array_domain[$array_num - 1], $domain_postfix_cn_array)) {
$re_domain = $array_domain[$array_num - 2] 。 “。” 。 $array_domain[$array_num - 1] 。 “。” 。 $array_domain[$array_num];
} 别的 {
$re_domain = $array_domain[$array_num - 1] 。 “。” 。 $array_domain[$array_num];
} 别的 {
$re_domain = $array_domain[$array_num - 1] 。 “。” 。 $array_domain[$array_num];
返回$re_domain;
希望这篇文章对您的PHP编程有所帮助。
本文通过一个例子介绍了多个PHP文件上传到服务器的实现。 对于多个文件同时上传到服务器的情况,我们需要使用链表方式的参数传递以及数据的遍历上传。 具体操作步骤分析如下:
1. 示例
上传图片到服务器是程序开发过程中必不可少的功能。 不仅可以达到图片分享的目的,还可以增加网站的流量,丰富网站的内容。 本例说明如何通过POST方法上传多张图片。
2、关键技术
上传多个文件的关键是如何定义上传文件元素的名称以及如何确定上传文件的数量。 在本例中,上传文件的名称被定义为一个字段(上传文件的名称为“files[]”)。 为了达到上传任意数量图片(4张以内)的目的,在处理上传文件的过程中,使用array_filter()函数和回调函数消除链表中的空元素。
array_filter()函数使用回调函数来过滤链表中的元素。 语法如下:
复制代码代码如下: array array_filter(array input[,callbackcallback])
array_filter() 函数按顺序将输入列表中的每个值传递给回调函数。 如果回调函数返回TRUE,则输入链表的当前值将包含在返回的结果链表中,并且链表的键值保持不变。
注意:不要在回调函数中更改链表,例如添加或删除链表中的元素。 一旦链表发生变化,这个函数的使用就没有意义了。 如果没有提供callback()函数,array_filter()将删除input中所有等于FALSE的元素。
本例中定义的回调函数为check(),用于验证字段中的元素值是否为空,其语法如下:
复制代码的代码如下: function check($var){//检查字段的返回值是否为空
返回($var!="");
注意:要通过POST上传多张图片,创建form表单时必须指定enctype="multipart/form-data"属性。 如果想通过隐藏字段MAX_FILE_SIZE的值来控制上传文件的大小,必须将隐藏字段放在上传文件的文件字段之前攻击php,否则不起作用。
3、设计流程
(1) 创建index.php文件。 添加表单,设置文件字段,提交按钮,使用POST方法,设置enctype="multipart/form-data",将数据提交到index_ok.php页面,完成多个文件的上传操作。 关键代码如下:
复制代码代码如下:
(2)在index.php文件中,连接数据库,读取数据库存储的数据,实现上传文件的分页输出。 代码请参考光盘中的相关内容。
(3)创建index.php文件,用于获取表单提交的数据,在服务器中存储多个文件攻击php,在数据库中存储文件名和存储路径。 代码如下:
复制代码代码如下: