【发布时间】:2011-10-26 14:52:16
【问题描述】:
我在处理最简单的任务时遇到了麻烦。 html 页面有一个 textarea 标记,它使用带有 jquery 的 $.get() 将数据发送到 php 文件
从那里我使用了从 htmlspecialchars 到 addlashes 的各种方法。 但似乎没有什么能按应有的方式工作,要么因为留下一个 \ 而抛出错误,要么没有保留换行符。
如何将 textarea 的值传递给 php 文件,使其具有注入证明和 json 兼容。 这样当我使用 mysql 访问它并使用 $.formatJSON() 对其进行格式化时。它可以正常工作并保留所有换行符?
//php
$result = htmlspecialchars($_GET["message"]);
mysql_query("INSERT INTO table (message) VALUES ($result)");
//jquery
$.ajax({
url:("http://websitename.com/post.php?message=" + message + "&callback=?"),
dataType: 'JSONP',
success:function(json){
callback($.parseJSON(json));
},
error:function(){
},
});
【问题讨论】:
-
如果这是您的实际代码,那么您的 SQL 是错误的。您需要在尝试插入的字符串中添加单引号。
mysql_query("INSERT INTO table (message) VALUES ('$result')");并在插入前转义字符串。 -
这就是重点,能够在保留正确字符的同时逃脱麻烦的字符。 php代码也只是一个例子。
标签: php jquery mysql code-injection