这里有一个奇怪的情况.在我的本地mysql数据库(v5.1.41)上,如果我要处理用户的引用语法而没有任何问题,我需要使用此转义命令.但是我无法在我的Web服务器的mysql数据库(v5.0.91-community)上使用此命令.如果在Web服务器上使用此命令(apache v2.2.13),则会在用户的引用语法中添加额外的斜杠语法,因此,如果删除mysql_real_escape_string命令,带引号的输入将无法插入数据库.
所以我想知道,除了php,在apache(v2.2.13)或mysql本身中是否有设置可以自动处理引用语法,如PHP的mysql_real_escape_string命令?
先感谢您
有没有更简单的方法来安全地提取除以下之外的提交变量?
if(isset($_REQUEST['kkld'])) $kkld=mysql_real_escape_string($_REQUEST['kkld']);
if(isset($_REQUEST['info'])) $info=mysql_real_escape_string($_REQUEST['info']);
if(isset($_REQUEST['freq'])) $freq=mysql_real_escape_string($_REQUEST['freq']);
Run Code Online (Sandbox Code Playgroud)
(而且:你会isset()在这种情况下使用吗?)
我试图使用addslashes和mysql_real_escape_string来清理我的PHP登录输入.使用addslashes作品,但mysql_real_escape_string不会.
以下是允许我正确登录的示例:
$user = addslashes($_POST['user']);<br/>
$password = addslashes($_POST['password']);
Run Code Online (Sandbox Code Playgroud)
这不会:
$user = mysql_real_escape_string($_POST['user']);<br/>
$password = mysql_real_escape_string($_POST['password']);
Run Code Online (Sandbox Code Playgroud)
此外,我的一些其他字段包含撇号.使用addslashes时不返回任何内容,因为数据库中的条目不会被转义.我想知道是否使用mysql_real_escape_string可以解决这个问题,但我不知道如何.
我的mysql_real_escape_string被忽略了.它杀了我,因为我觉得这是我想念的小事.
$ htmlText变量来自TinyMCE编辑器,其中文本呈现为HTML,即带有标签等.
<?php
/*--------GLOBAL PROCEDURES--------*/
session_start();
require "../scr/config-data.php.inc";
mysql_connect($host,$username,$password) or die
("Could Not Connect".mysql_error());
mysql_select_db($db) or die ("Could Not Connect".mysql_error());
/*-----SEVERAL SELECT/INSERT QUERIES, ALL WORKING FINE-----*/
/*--------SPECIFIC PROCEDURES-------*/
if($_POST['submit']){
//Check that POS has been chosen
$htmlText = mysql_real_escape_string($_POST['cust']);
if($htmlText != ""){
mysql_query("INSERT INTO table VALUES(NULL, '$htmlText' )") or die(mysql_error());
}else{
$feedback = "Please Enter some text into the editor";
}
}
/*--------CLOSING PROCEDURES-------*/
mysql_close();
?>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它是从一个有效的脚本改编而来,只改变了变量名.我在MySQL语法中遇到错误.它也没有转义文本中的HTML,所以我收到此错误:
You have an error in your SQL syntax; check the manual that corresponds …Run Code Online (Sandbox Code Playgroud) 如何正确编写内爆和mysql_real_escape_string的MySQL查询的代码?
这是我的代码,但它失败了:
$sql = "INSERT INTO BEER_LOCATIONS
(LOCATION_NAME, LOCATION_STREET, LOCATION_CITY, LOCATION_STATE,
LOCATION_ZIPCODE, LOCATION_PHONE, BEER_STYLE )
VALUES
('" . mysql_real_escape_string(implode("', '", $row)) . "')";
Run Code Online (Sandbox Code Playgroud)
谢谢
好的,这个主题是我理解的温床.我也明白这种情况取决于您使用的代码.我有三种情况需要解决.
我有一个表格,我们需要允许人们发表使用逗号,波浪号等的评论和陈述......但仍然可以安全地免受攻击.
我有人进入这样的日期:10/13/11 mm/dd/yy英文,这可以消毒吗?
如何理解如何使用htmlspecialchars(),htmlentities()以及real_escape_string()是否正确?我已经阅读了php.net网站和这里的一些帖子,但在我看来这是一个情况,这一切都取决于阅读问题的人是什么正确的答案.
我真的不能接受......必须有一个答案,其中与我在这里发布的文本格式类似的文本格式可以被清理.我想知道是否以及如何做到这一点.
谢谢...因为在我看来,在其他地方提出这个问题时,它往往会烦恼...我正在学习我需要知道的东西,但我想我已经达到了一个平台,我所知道的就是没有一个例子它意味着......
提前致谢.
我有一个文件"submit.php",它将从"choose-product.php"中的前一个表单提交的一系列值写入MySQL数据库.我已经mysql_real_escape_string按照上一个问题中的建议使用了,但是我注意到如果我将"choose-product.php"文件上传到单独的服务器并将表单的开头更改为
<form name="form" id="form" action="http://www.myserver.com/submit.php" method="post">
Run Code Online (Sandbox Code Playgroud)
这也将为数据库写一系列值.显然这非常糟糕!现在,我知道有一种方法可以解决这个问题,但由于这是我第一次编写这样的代码,我有点难过.
以下是完整代码submit.php:
<?php
include("db.php");
function random_string() {
$character_set_array = array();
$character_set_array[] = array('count' => 7, 'characters' => 'abcdefghijklmnopqrstuvwxyz');
$character_set_array[] = array('count' => 1, 'characters' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ');
$character_set_array[] = array('count' => 3, 'characters' => '0123456789');
$character_set_array[] = array('count' => 1, 'characters' => '!@#$*&:');
$temp_array = array();
foreach ($character_set_array as $character_set) {
for ($i = 0; $i < $character_set['count']; $i++) {
$temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
}
}
shuffle($temp_array); …Run Code Online (Sandbox Code Playgroud) 只是想知道,我的应用程序需要尽可能快,并且变量已经被转换为int,所以如果可以避免,我也不想转义字符串.
例如:
$var1 = (int)$_POST['number1'] //User input;
mysql_query("INSERT INTO ... $var1 ..");
Run Code Online (Sandbox Code Playgroud)
在所有情况下都是安全的还是我也应该mysql_real_escape_string $var1?
有时我也是md5()vars而不是逃避它们,但我想这没关系.
当我将变量发布到数据库时,我当然使用了mysql_real_escape_string.这样,特殊字符就像它应该的那样进入数据库.
当我从数据库中读取这个变量时,我再次使用mysql_real_escape_string stripslashes:
$var = stripslashes(mysql_real_escape_string($record['rowname']));
Run Code Online (Sandbox Code Playgroud)
否则它会在引号前给我斜线.
当我使用$var上面提到的这个并想要回应它时,我很简单,echo "$var"因为它已经被剥离并逃脱了,对吧?
另外,如果我在变量上使用stripslashes+ mysql_real_escape_string,那么在数据库中再次POST这个相同的变量就mysql_real_escape_string足够了吗?或者我是否还需要stripslashes这个变量?
总结如下:
据我所知,这是如何工作的:
mysql_real_escape 每一次:当通过变量读取查询时,就像将变量发布到数据库一样.stripslashes在回显转义变量时使用.stripslashes变量再次发布和转发到数据库,则无需再次将其删除.我想念htmlspecialchars吗?
编辑
所以这都错了?
while( $record=mysql_fetch_array($result) )
{
$custid=mysql_real_escape_string($record['custid']);
$custsurname=mysql_real_escape_string($record['custsurname']);
$custmidname=mysql_real_escape_string($record['custmidname']);
$custforename=mysql_real_escape_string($record['custforename']);
$custcountry=stripslashes(mysql_real_escape_string($record['custcountry'])); }
Run Code Online (Sandbox Code Playgroud) php mysql mysql-real-escape-string htmlspecialchars stripslashes
我正在尝试与LIKE LOWER('% %')命令进行模式匹配,但是我认为我使用带有 %s 的 python 变量这一事实正在搞砸。我似乎找不到百分比符号的任何转义字符,而且我的程序没有给我任何错误。这是问题还是我还缺少其他东西。如果我只是运行它确实有效,LIKE %s但是我需要能够像不等于一样搜索。
# Ask for the database connection, and get the cursor set up
conn = database_connect()
if(conn is None):
return ERROR_CODE
cur = conn.cursor()
print("search_term: ", search_term)
try:
# Select the bays that match (or are similar) to the search term
sql = """SELECT fp.name AS "Name", fp.size AS "Size", COUNT(*) AS "Number of Fish"
FROM FishPond fp JOIN Fish f ON (fp.pondID = f.livesAt)
WHERE LOWER(fp.name) LIKE LOWER('%%s%') …Run Code Online (Sandbox Code Playgroud) python postgresql mysql-real-escape-string pattern-matching sql-like
php ×9
mysql ×7
apache ×1
apostrophe ×1
implode ×1
postgresql ×1
python ×1
sanitization ×1
security ×1
sql-like ×1
stripslashes ×1