gpt4 book ai didi

mysql - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解使用近线 1 的正确语法

转载 作者:行者123 更新时间:2023-11-29 21:47:18 26 4
gpt4 key购买 nike

我的代码有这个问题,但找不到问题实际出在哪里,有人遇到过类似的问题吗?

<?php
include("db.php");
if(isset($_POST['submit']))
{
$name=$_POST['namename'];
$job=$_POST['job'];
$message=$_POST['message'];
$insert=mysql_query("insert into commenttable(name,job,message)values('$name','$job','$message')")or die(mysql_error());
header("Location:../home.php");
}
?>

它在本地主机上运行

服务器类型:MySQL服务器版本:5.5.42 - 源代码分发

忘记提及,如果我发布简单的评论,例如“你好”,它工作正常,但是当我尝试发布这样的评论时

<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">

对于攻击,它不起作用,我收到错误消息。我这样做是为了小型攻击项目,这就是为什么我需要让它发挥作用。

谢谢!

最佳答案

如果您的代码在尝试插入文本 <INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');"> 时失败那么显然,正在发生的事情就是 Uueerdo 在他的评论中建议的:“XSS”之前的单引号被 MySQL 解释为字符串的结束单引号,留下一个悬空的 XSS');' ,这当然是一个语法错误。

有两种方法可以解决这个问题:

  1. 以编程方式转义单引号。如果你自己做的话,这会很棘手,但是 PHP 中应该有一些库函数可以做到这一点,所以它看起来像 message = escape_for_sql( message ) 。 (抱歉,我没有复制美元符号,我过敏。)

  2. 更好的是,使用参数化查询,在其中使用“?”构建查询。代替每个值,表示查询的参数,然后为每个参数提供值,然后执行查询。我不知道这在 PHP 中是如何完成的,搜索“参数化查询 PHP”。

关于mysql - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解使用近线 1 的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34005264/

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