相关疑难解决方法(0)

htmlspecialchars和mysqli_real_escape_string之间的区别?

我在PHP书中读到,当我们处理用户输入的数据时,使用htmlspecialcharsmysqli_real_escape_string处理条件是一个好习惯.这两者之间的主要区别是什么,它们适合使用?请指导我.

php mysql

6
推荐指数
3
解决办法
4989
查看次数

除了XSS和Sql注入,我可以保护我的网站的方法吗?


因此,我的网站成员可以发布主题,回复,评论,编辑它们等.我总是使用htmlspecialcharsaddslashes输入html来保护我的网站免受XSS和SQL注入攻击.这还不够,还是有什么我想念的?
谢谢.

php mysql security xss sql-injection

5
推荐指数
2
解决办法
1778
查看次数

将文本从textarea插入MySQL数据库而不会丢失格式

我正在尝试将我站点上的textarea中的文本添加到MySQL数据库中.

下面是将文本添加到数据库的PHP代码.

if (isset($_POST['text']))
{
    $text = sanitizeString($_POST['text']);
    $text = preg_replace('/\s\s+/', ' ', $text);

    $query = "SELECT * FROM profiles WHERE user='$user'";
    if (mysql_num_rows(queryMysql($query)))
    {
        queryMysql("UPDATE profiles SET text='$text' where user='$user'");
    }
    else
    {
        $query = "INSERT INTO profiles VALUES('$user', '$text')";
        queryMysql($query);
    }

}
else
{
    $query  = "SELECT * FROM profiles WHERE user='$user'";
    $result = queryMysql($query);

    if (mysql_num_rows($result))
    {
        $row  = mysql_fetch_row($result);
        $text = stripslashes($row[1]);
    }
    else $text = "";
}

$text = stripslashes(preg_replace('/\s\s+/', ' ', $text));
Run Code Online (Sandbox Code Playgroud)

以下是表单的代码.

<textarea …
Run Code Online (Sandbox Code Playgroud)

php mysql

5
推荐指数
1
解决办法
3万
查看次数

我应该清理传递的每个表格变量吗?

我有一个有很多领域的表格......

该动作设置为查询mysql的php页面...

我应该对mysql_real_escape_string每个变量进行消毒吗?或者我可以忽略清理丢弃列表和无线电吗?

此外,除此之外mysql_real_escape_string,我还应该做些什么来防止攻击?

谢谢

php mysql sql database security

4
推荐指数
1
解决办法
744
查看次数

这样安全吗?ADOdb准备好的声明

我正在使用ADOdb连接到我的MSSQL数据库.我想知道这是否足以阻止SQL注入?

我正在使用的准备好的查询是:

       $db = ADONewConnection('odbc_mssql');
       $dsn = "Driver={SQL Server};Server=SERVNAME;Database=DBNAME;";
       $ADODB_COUNTRECS = false;

       $db->Connect($dsn,'LOGIN','PASS');

       $sql = 'SELECT login, etc FROM users WHERE login ='.$db->Param('0').' AND pass ='.$db->Param('1').'';
       $stmt = $db->Prepare($sql);  
       $stmt = $db->Execute($stmt,array("$user_id","$psw"));
Run Code Online (Sandbox Code Playgroud)

或者您可能会建议切换到PDO?

php sql-server adodb

4
推荐指数
1
解决办法
5026
查看次数

单引号是否在PHP中自动转义?那么清洁需要什么?

我正在阅读网络安全性,一个明显的主题是SQL注入.我正在尝试建立一个基本的php页面,我可以在其中执行sql注入(它是一个本地服务器).但是,似乎我的代码(或服务器)自动转义单引号.这是一个新标准还是我的服务器上激活了一个我不知道的设置?是否需要清理输入?

这是我的服务器端代码的示例:

$foo = $_POST['foo'];
$sql = "SELECT * FROM bar WHERE foo='" . $foo . "'";

connectoTo("database");
query($sql);
Run Code Online (Sandbox Code Playgroud)

其中connectTo()连接到数据库服务器并选择数据库,query()是执行查询时使用的常用过程.什么都没有清洁.但是,当我发送时

$_POST['foo'] = "' OR 1=1 #" 
Run Code Online (Sandbox Code Playgroud)

php页面收到这个

$_POST['foo'] = "\' OR 1=1 #"
Run Code Online (Sandbox Code Playgroud)

所以foo已经逃脱了?这与$ _GET相同.

有什么想法吗?我们不再需要清理用户输入了吗?

干杯

埃里克

php sql quotes escaping code-injection

3
推荐指数
2
解决办法
3014
查看次数

如何保护项目免受黑客攻击和攻击?

不久前我已经开始进行Web开发了.我现在知道一些事情,但我真的很担心可能出现的安全问题.我知道像preg_replace这样的简单安全解决方案,但我对此并不自信.

因此,我想问你任何可以在以下情况下应用的"通用"安全标准.正如我所提到的,我不是专业人士,所以如果你能从一些简单但有用的东西开始,那将会很棒.如果可能,请提供示例吗?

我确实看过php手册,虽然我想知道人的其他信息.

以下是我在项目中使用的一些典型的MySQL/PHP内容.您能否提出任何改进措施以使其更安全?

$sql = mysql_query("SELECT * FROM stories WHERE showing = 1 ORDER BY cr_date DESC LIMIT 5") or die (mysql_error("There was an error in connection"));
        while($row = mysql_fetch_assoc($sql)){
            $story_id = $row["id"];
            // etc...
        }
Run Code Online (Sandbox Code Playgroud)
$username = $_POST['username'];
$sql = mysql_query("INSERT INTO myMembers (username, //etc... ) 
VALUES('$username' //etc.. ")or die (mysql_error());
Run Code Online (Sandbox Code Playgroud)
$username = $_GET['username']; 
//gets username from url like http://myweb.com/profile.php?username=blabla
Run Code Online (Sandbox Code Playgroud)

php mysql security sql-injection

3
推荐指数
1
解决办法
759
查看次数

我应该使用htmlspecialchars还是mysql_real_escape_string还是同时使用

我已让用户输入一些信息(姓名,出生日期等)。然后,我必须将这些值插入数据库。我是否应该使用mysql_real_escape_string()防止mysql注入和htmlspecialchars()处理html标记的方式,它们都是必需的还是其中之一?

如果我只使用其中之一,那么哪一个呢?如果我要同时使用,那么哪个先哪个,最后一个哪个?

php

3
推荐指数
1
解决办法
7984
查看次数

安全的PHP查询?

我有一个页面来激活用户点击我发送的电子邮件中的激活链接,该电子邮件包含一个使用GET方法发布电子邮件地址的网址,我的代码如下,但我要求的是这是一个安全的方法或者是有什么方法可以改进吗?谢谢

$username = $_GET['email']; 

mysql_query("UPDATE users SET active = 'yes'
WHERE email = '$username'") or die('oops!');

echo "<meta http-equiv=\"refresh\" content=\"0;URL=/index.php?msg=active\">";
Run Code Online (Sandbox Code Playgroud)

php mysql email

2
推荐指数
2
解决办法
4990
查看次数

CodeIgniter中的MySQL安全性

我是CodeIgniter的新手,但不是PHP新手,我想知道我需要在CodeIgniter中做些什么才能使我的所有查询都安全.

通常情况下,我只是用mysql_real_escape_string()在查询(标准PHP)中使用的每个变量,但我看了笨,这里笔者没有逃脱变量的教程,只是做了一个标准的插入类似如下:

$this->db->query("SELECT * FROM Users WHERE Username = ?", array($username));
Run Code Online (Sandbox Code Playgroud)

哪种方式是正确的?

php mysql security sql-injection codeigniter

2
推荐指数
1
解决办法
1632
查看次数

转义变量

我已经读过它足够甚至建议在输出上转义字符,而不是输入.

它可以很容易地应用于所有get变量,因为它们不会从表单级别注入数据库.

但是,我不确定如何处理所有后期变量.如果它不是来自数据库,那么如果它是原始输入数据,则完全需要转义.但我正在使用PDO prepare/execute来逃避所有变量.现在问题:

  1. 是否可以在select和insert语句中使用PDO准备/执行?是不是两次逃避变量?
  2. 假设我通过PDO exeute语句得到一些变量 - 是否可以使用$ _POST ['variable']显示这个变量而不转义它(如果已经在PDO函数中完成)?
  3. htmlspecialchars()是否足以转义不是来自数据库的GET变量?

最重要的是 - 所有这些,PDO准备/执行,以及htmlspecialchars(),足以防止所有XSS攻击?或者我也应该做更多?如果是这样,那应该是什么?从输入中删除所有html标签?使用BB-Code代替?

php security xss escaping

2
推荐指数
1
解决办法
1万
查看次数

mysql_real_escape_string(htmlspecialchars())真的有用吗?为什么?

有这样的东西真的很有用吗:

$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
Run Code Online (Sandbox Code Playgroud)

为什么我们用这个?如何优化呢?

谢谢

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("nom_db");

$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
$passe2 = mysql_real_escape_string(htmlspecialchars($_POST['passe2']));
if($passe == $passe2)
{
    script here
}

else
{
    echo 'Your password is wrong';
}
?>
Run Code Online (Sandbox Code Playgroud)

php mysql sql security

1
推荐指数
1
解决办法
7888
查看次数