gpt4 book ai didi

php - 如何在 PHP 中保护我的 $_GET?

转载 作者:行者123 更新时间:2023-11-29 04:59:32 25 4
gpt4 key购买 nike

我的profile.php 显示了所有用户的帖子、评论、图片。如果用户想要删除,它会将帖子的 ID 发送到 remove.php,就像 remove.php?action=removeposting&posting_id=2。如果他们想删除图片,则为 remove.php?action=removepicture&picture_id=1。

使用获取数据,我查询数据库以显示他们想要删除的信息,如果他们想要删除它,他们单击"is"。所以通过 $POST NOT $GET 删除数据,以防止跨站请求伪造。

我的问题是如何确保 GET 不是一些 javascript 代码,sql 注入(inject)会把我搞得一团糟。

这是我的 remove.php

    //how do I make $action safe? 
//should I use mysqli_real_escape_string?
//use strip_tags()?
$action=trim($_GET['action']);

if (($action != 'removeposting') && ($action != 'removefriend')
&& ($action != 'removecomment'))
{
header("Location: index.php");
exit();
}

if ($action == 'removeposting')
{
//get the info and display it in a form. if user clicks "yes", deletes
}

if ($action =='removepicture')
{
//remove pic
}

我知道我不能 100% 安全,但我可以使用哪些常见的防御措施。

编辑

Do this to prevent xss
$oldaction=trim($_GET['action']);
$action=strip_tags($oldaction);

Then when I am 'recalling' the data back via POST, I would use
$posting_id = mysqli_real_escape_string($dbc, trim($_POST['posting_id']));

        if ($action == 'removeposting')
{
//get the posting id from the user
$getposting_id = htmlspecialchars(trim($_GET['posting_id']));

//basic checks for the posting id
if (empty($getposting_id)){
//header ("Location: index.php");
echo '<p>Sorry, no posting was specified for removal.</p>';
exit();
}

if (!is_numeric($getposting_id))
{
echo "Not an integer";
exit();
}
//Also have check to see if the posting_id is the user's. If so, can delete

最佳答案

因为您没有存储 $action 并且只在您的条件中使用它,所以没有必要进行所有的修剪/剥离/转义。就“安全”而言,简单的字符串比较就足够了,尽管我建议使用 === 而不是 ==

或者,如果您要将 $_GET$_POST 值存储到 MySQL 数据库的整数列中,例如,您可以简单地将值传递到 intval() 在将其存储到数据库之前。如果您需要存储纯文本,只需在存储之前通过 mysql_real_escape_string() 传递即可。您还可以使用 preg_match()preg_replace() 来确保您只存储有效值(不同用途的不同模式,例如 /^\d{ 5}(?:-?\d{4})?$/ 邮政编码)。

关于php - 如何在 PHP 中保护我的 $_GET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2824341/

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