下载鸥 > 网站下载 > 开发教程 > PHP

php提升网站安全的参数化查询怎样做增删查改?

35 2024-10-29 06:00:02

收藏
php提升网站安全的参数化查询怎样做增删查改?
php的参数化查询,是提升网站安全性的重要举措之一,那么,我们应该怎样通过参数化查询执行网站的增删查改四大操作呢?
 

参数化查询的增删查改

<?php
// php参数化查询增删查改
$host = 'localhost';
$dbname = 'demo_db';
$username = 'root';
$password = ''; // 或者设置你的数据库密码

try {
    // 创建一个新的数据库连接
    $conn = new mysqli($host, $username, $password, $dbname);

    // 检查连接
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    // 创建用户
    if (isset($_POST['create'])) {
        $name = $_POST['name'];
        $email = $_POST['email'];

        $stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->bind_param("ss", $name, $email);
        $stmt->execute();
        $stmt->close();
        echo "User created successfully.";
    }

    // 查询用户
    if (isset($_GET['read'])) {
        $id = $_GET['read'];

        $stmt = $conn->prepare("SELECT id, name, email FROM users WHERE id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $result = $stmt->get_result();

        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc()) {
                echo "ID: " . $row["id"] . " - Name: " . htmlspecialchars($row["name"]) . " - Email: " . htmlspecialchars($row["email"]);
            }
        } else {
            echo "No results found.";
        }
        $stmt->close();
    }

    // 更新用户
    if (isset($_POST['update'])) {
        $id = $_POST['id'];
        $name = $_POST['name'];
        $email = $_POST['email'];

        $stmt = $conn->prepare("UPDATE users SET name = ?, email = ? WHERE id = ?");
        $stmt->bind_param("ssi", $name, $email, $id);
        $stmt->execute();
        $stmt->close();
        echo "User updated successfully.";
    }

    // 删除用户
    if (isset($_GET['delete'])) {
        $id = $_GET['delete'];

        $stmt = $conn->prepare("DELETE FROM users WHERE id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $stmt->close();
        echo "User deleted successfully.";
    }

} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

// 关闭连接
$conn->close();
?>
 

html演示

通过下方的html代码,我们可以更直观的测试整个流程。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CRUD Operations</title>
</head>
<body>
    <h1>Create User</h1>
    <form action="crud.php" method="post">
        Name: <input type="text" name="name"><br>
        Email: <input type="email" name="email"><br>
        <input type="submit" name="create" value="Create">
    </form>

    <h1>Read User</h1>
    <form action="crud.php" method="get">
        ID: <input type="number" name="read"><br>
        <input type="submit" value="Read">
    </form>

    <h1>Update User</h1>
    <form action="crud.php" method="post">
        ID: <input type="number" name="id"><br>
        New Name: <input type="text" name="name"><br>
        New Email: <input type="email" name="email"><br>
        <input type="submit" name="update" value="Update">
    </form>

    <h1>Delete User</h1>
    <form action="crud.php" method="get">
        ID: <input type="number" name="delete"><br>
        <input type="submit" value="Delete">
    </form>
</body>
</html>

如此,我们就完成了php网站的参数化查询,进一步提升网站安全性。
 

附注

使用参数化查询是提升网站安全性的重要举措之一,可以在很大程度上防止SQL注入攻击。但仅仅依靠参数化查询并不足以确保整个网站的安全。以下是几个需要综合考虑的安全方面:
输入验证:除了使用参数化查询外,还需要对用户输入的数据进行验证,确保它们符合预期的格式和范围。
输出编码:确保任何从数据库获取并在网页上显示的数据都被适当编码,以防止跨站脚本(XSS)攻击。
会话管理:确保会话令牌的安全性,防止会话劫持。
文件上传:对于允许用户上传文件的功能,要确保文件类型和内容是安全的,防止上传恶意文件。
权限控制:确保只有授权用户才能访问敏感数据或执行敏感操作。
加密通信:使用HTTPS协议加密客户端与服务器之间的通信,防止中间人攻击。
日志记录与监控:定期检查日志文件,监测任何异常行为或潜在的攻击尝试。
安全更新与补丁:及时更新所有使用的软件和库,修补已知的安全漏洞。
第三方服务安全:确保第三方服务提供商也是安全的,尤其是在使用外部API和服务的情况下。
安全审计:定期进行安全审计和渗透测试,发现潜在的安全漏洞。
错误处理:妥善处理错误信息,避免泄露过多细节给攻击者利用。

总之,虽然参数化查询是防止SQL注入的一个重要步骤,但它只是全面安全策略的一部分。为了确保网站的整体安全性,还需要采取多种防护措施,并持续关注新的安全威胁和技术。

本文地址:https://xzo.com.cn/develop/php/1421.html

有帮助,很赞!

信息来源:下载鸥
导出教程 下载word版教程
发表评论 共有条评论
关于PHP

PHP是一种服务器端、跨平台、html嵌入式的脚本语言,其功能十分强大、入门简单。在过去,民间一直有说法称“PHP是最好的编程语言”,是PHP开发者对自身所使用语言的肯定。

PHP曾是最主流的网站web开发语言之一,现在也依然十分流行。

推荐PHP开发教程
str_replace怎样一次性替换多个值(数组)?
str_replace怎样一次性替换多个值(数组)?

我们知道,str_replace是可以执行替换命令的,但一般是用于一对一替换,这个很好...

1 439
php怎样开发一个访问密码的界面防止资源被爬取?
php怎样开发一个访问密码的界面防止资源被爬取?

互联网上每天都有很多爬虫到处爬取内容,你可能不知道他们是干嘛的,但其中肯定...

1 399
当缓存文件大于4KB,不能用cookie时的替代方案就是session
当缓存文件大于4KB,不能用cookie时的替代方案就是session

鸥哥最近在开发一个项目,出于对用户隐私的保护,数据一概不能存储到数据表,而是...

1 441
宝塔Nginx免费防火墙提示post参数(post_max_size)值长度超过20w已被系统拦截怎么办?
宝塔Nginx免费防火墙提示post参数(post_max_size)值长度超过20w已被系统拦截怎么办?

页面提交post请求后被宝塔防火墙拦截,查看日志显示错误:参数值长度超过20w已...

1 761
json数据{}转为php数组[]
json数据{}转为php数组[]

json是使用非常广泛的数据,通过使用json,我们还可以实现多种语言的联动。今天...

0 381
什么是高并发,与CPU,内存,分布式有什么关系
什么是高并发,与CPU,内存,分布式有什么关系

我们在网站开发的过程中经常会接触到高并发这个概念,但高并发到底是什么,具体...

1 391
php正则提取字符串中的数字并打印输出
php正则提取字符串中的数字并打印输出

我们在网站开发的过程中经常需要处理数据,今天讲讲怎样用正则提取字符串中的...

0 435
怎样用php批量删除文件或者文件夹?
怎样用php批量删除文件或者文件夹?

在网站建成后的维护与优化阶段,我们会面临无用栏目/数据处理的问题。量小的...

0 375
推荐插件
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

0 1123
帝国cms百度AI图像清晰度增强api接口对接插件
帝国cms百度AI图像清晰度增强api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像清晰度增强的功能。经...

0 498
帝国cms百度AI图像无损放大api接口对接插件
帝国cms百度AI图像无损放大api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像无损放大的功能。经过...

0 438
帝国cms百度文字识别ocr接口对接插件
帝国cms百度文字识别ocr接口对接插件

许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...

0 451
帝国cms访问统计ip地址链接与封禁插件下载
帝国cms访问统计ip地址链接与封禁插件下载

下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...

0 985
帝国cms自动给正文关键词添加tag内链
帝国cms自动给正文关键词添加tag内链

帝国cms有自带的给关键词添加内链功能,但需要手动添加关键词,容易出现疏漏和...

0 811
帝国cms智能自动审核按星期几审核指定栏目带推送插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件

采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...

0 1274
帝国cms批量添加后台用户插件
帝国cms批量添加后台用户插件

使用帝国cms的企业用户、新闻资讯类站点的用户很多,此类站点很多时候需要有...

0 675
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入