gpt4 book ai didi

php - 保护 mysql 数据库查询免受 SQL 注入(inject)攻击

转载 作者:行者123 更新时间:2023-11-29 12:12:51 24 4
gpt4 key购买 nike

我是一个 PHP 安全菜鸟。我的网站上有两个东西可以用来查询我的数据库(仅包含有关组成我的网站的页面的信息,例如标题、关键字等)

a) 我动态创建菜单。我通过 url 传递一个变量,然后将其提取出来并在查询中使用它,如下所示:

User clicks on subpage.php?someid=12

我查询数据库:

    if(isset($_GET["someid"])) {
if (preg_match('/[0-9]+/', $_GET["someid"])) {
$input = mysqli_real_escape_string($connect, $_GET["someid"]);
$sql_3 = "SELECT link, title FROM pages WHERE parent_page = ".$input."";

这足够安全吗?

b) 我有一些关键字搜索。我的数据库表包含一个带有关键字的文本字段。用户可以在输入字段中输入几个关键字,然后我查询数据库:

if(isset($_POST["keywords"])) {

if (preg_match('/^([a-zA-Z\-0-9]+(?:\s|$))+$/', $_POST["keywords"])) {
$input = mysqli_real_escape_string($connect, $_POST["keywords"]);
$sql_8 = 'SELECT id FROM pages WHERE match(keywords) against ("'.$input.'")';

这足够安全吗?

感谢您的提示和帮助!

最佳答案

只需在连接字符串后面添加以下行即可。

/*Start Security Purpose*/
if (get_magic_quotes_gpc()) {
function stripslashesGpc(&$value)
{
$value = stripslashes($value);
}
array_walk_recursive($_GET , 'stripslashesGpc');
array_walk_recursive($_POST , 'stripslashesGpc');
array_walk_recursive($_COOKIE , 'stripslashesGpc');
array_walk_recursive($_REQUEST , 'stripslashesGpc');
}
//Prevent Sql Injection
$_POST = isset($_POST)?$_POST:"";
array_walk($_POST, function(&$string) use ($conn) { $string = mysqli_real_escape_string($conn, $string);});
/*End Security Purpose*/

您可以查看https://github.com/jewelhuq/Simple-php-crud-project/blob/master/dbconnect.php

关于php - 保护 mysql 数据库查询免受 SQL 注入(inject)攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30346277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com