第十四天:PHP 开发,输入输出类&留言板&访问 IP&UA 头&来源

发布时间 2023-11-15 22:57:34作者: 小鱼QAQ

1、PHP-全局变量$_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

参考:PHP 超级全局变量 | 菜鸟教程 (runoob.com)

2、MYSQL-插入语法 INSERT

INSERT 完整写法:

使用Inset into 表名(字段1,字段2) values(值1,值2)进行插入。

REPLACE INSERT语句:取代插入

此语句的作用是当我们在插入一条数据时,如果此条已经存在,那么先删除原来存在的数据再添加插入的数据,如果不存在那么直接插入新的数据。注意:区分是否存在是通过主键来确定的

replace Inset into 表名(字段1,字段2) values(值1,值2)

INSERT IGNORE INTO 语句:选空插入

此语句的作用是如果插入的数据已经存在那么就忽略插入的数据(也就是不改变原来的数据),如果不存在则插入新的数据。
注意:区分是否存在是通过主键来确定的

INSERT SELECT语句

1.此语句的作用是将SELECT语句的结果插入表中,可实现数据迁移
2.语法:insert into 插入的表名(字段1,字段2,字段3) select 被查询的字段1,被查询的字段2 from 被查询的表名;
3.先查看需要插入的表的所有数据

3、输入输出-XSS&反射&存储

相关:

<?php
    include'config/conn.php' //选择包含配置性文件
    $s = $_POST['search']; //用变量$s来接post上传的参数search
    $sql = "select * from sy_guestbook where gName like '%$s%'"; //sql查询语句,like的作用是在一个字符型字段列中检索包含对应子串的
    $result=mysql_query($sql,$conn);//执行sql语句
    echo '你搜索的:'.'$s''.''结果如下:';
    while($row=mysql_fetch_array($result)){
        echo '<br><br><hr>';
        echo $row['id'];
        echo $row['gName'];
}
?>

输入输出相关漏洞:

XSS:输入的数据会在页面中显示,是造成XSS攻击的第一根本条件,在未过滤的情况下,某些本应该显示在页面中的语句会被直接当成代码执行。具有XSS漏洞的地方有很多,留言板就是个人博客中可以执行XSS的地方。(接收输入值,并且输出输入值)

存储型跨站攻击:有害代码被存储至数据库,只要调用数据库内容就会被执行。一般发生在数据库或者其他可以调用存储数据的地方

反射型跨站攻击:临时的,主动的xss攻击。

SQL注入(SQL Injection)和跨站脚本攻击(Cross-Site Scripting,XSS)是两种完全不同的安全漏洞,但它们都与用户输入不当处理相关,因此在某种程度上可以说存在一些共同点。

4、安全问题-XSS 跨站&CSRF 等

CSRF攻击:CSRF (Cross-Site Request Forgery) 跨站请求伪造,是一种网络攻击方式。攻击者可以利用用户已登录的身份,在用户不知情的情况下发送恶意请求,以执行一些操作,比如改变用户的密码、发送电子邮件等等。要防范 CSRF 攻击,可以使用一些技术手段,比如:

  1. 随机 Token:在表单中添加一个随机生成的 Token,并将其存储在用户的会话中。每次提交表单时,都要验证 Token 的有效性。

  2. SameSite Cookie 属性:设置 Cookie 的 SameSite 属性为 Strict 或 Lax,可以限制 Cookie 的发送,从而减少 CSRF 攻击的风险。

  3. 双重提交 Cookie:在用户的会话中存储一个随机生成的 Cookie,并在提交请求时同时发送这个 Cookie,服务器端验证请求中的 Cookie 和表单中的 Cookie 是否一致。

 

 

X-FORWAREDE-FOR:可造成伪造IP