【发布时间】:2016-07-02 20:49:18
【问题描述】:
我正在编写一个网站,我需要传递一个 SQL 查询以将用户带回一个页面,直到我添加到它之前我一直运行良好
它的输入在这里被截断 ....eventStatus = (我知道它需要发布,以 get 方式运行以进行调试)
(行内部 id 来自 SQL 查询) (SQL一般也是传入的变量)
Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/7.0.6
Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id:241ae00989d1995ffcbbf63d579943635faf9972 $
PHP extension: mysqli Documentation
PHP version: 7.0.6
Server Windows 7 64 (Its a school project)
我对隐藏输入做错了吗?
<form action='' method='get'>
<textarea name ='comment' rows='4' cols = '50' value =''></textarea>
<button type='createcomment' name='createcomment' value='createcomment'>
Comment
<input type = 'hidden' name = 'internal_id' value ={$row["internal_id"]}</>
<input type = 'hidden' name = 'sql' value ='"SELECT * FROM `create_event` WHERE `eventStatus` = 'Happening' and 'approved' = 'Approved'"'</>
</button>
</form>
邮政编码php
<?php
if(isset($_POST['createcomment'])){
echo($_POST['sql']);
}
echo("
<form action='' method='post'>
<textarea name ='comment' rows='4' cols = '50' value =''></textarea>
<button type='createcomment' name='createcomment' value='createcomment'>
Comment
<input type = 'hidden' name = 'sql' value ='SELECT * FROM `create_event` WHERE `eventStatus` = 'Happening' and 'approved' = 'Approved' '</>
</button>
</form>
");
?>
【问题讨论】:
-
GETURL 限制为 256 个字符。并不意外。使用POST,让我们知道问题是否仍然存在。 -
通过 URL 将整个 SQL 查询传递给脚本。这是我不知道的一种新形式的 SQL 注入攻击吗?
-
在实践中它会通过邮寄方式
-
并且错误仍在发生
-
你这样做完全错误,不要将 SQL 作为 GET 或 POST 传递。只是不要这样做。