草庐IT

JavaScript escape/unescape 的 PHP 等价物

假设我有一个字符串:something当我在JS中转义它时,我得到这个:%73%6F%6D%65%74%68%69%6E%67所以我可以在JS中使用这段代码来解码它:document.write(unescape('%73%6F%6D%65%74%68%69%6E%67'));我需要PHP中的转义函数,它会做同样的事情(将something编码为:%73%6F%6D%65%74%68%69%6E%67)怎么做? 最佳答案 PHP:rawurlencode("yourfunkystring");JS:decodeURIComponen

php - SQL 注入(inject)易受攻击的代码,即使我们正在清理输入 mysql_real_escape_string

我们被攻击了;黑客从下面代码中的页面进入系统,但我们无法找出这段代码中的实际问题。您能否指出此代码中的问题以及可能的修复方法? 最佳答案 这里的问题在$pass=hash("sha1",$pass,true);你需要这样写$pass=hash("sha1",$pass,false);迁移到PDO是一个不错的选择。让我们看看为什么会这样:你的代码正在做的是返回一个原始的二进制散列,这意味着在某个时间点散列可能包含一个相等的字符=,对于您的示例,在这种情况下导致SQL注入(inject)的散列是"ocpe"因为散列("ocpe",sha

php - 已通过 SQL 注入(inject)攻击的登录代码示例,尽管 mysql_real_escape_string...

我使用CodeIgniter,在破解方面遇到了麻烦。是否可以对以下登录代码进行SQL注入(inject):functionprocess_login(){$username=mysql_real_escape_string($this->input->post('username'));$password=mysql_real_escape_string(MD5($this->input->post('password')));//Checkusertable$query=$this->db->getwhere('users',array('username'=>$username,'

mysql - 启用 NO_BACKSLASH_ESCAPES 选项时如何转义文字百分号?

我的公司在NO_BACKSLASH_ESCAPES模式下运行MySQL。在这种模式下,如何在LIKE查询中转义文字%或_?标准方式是\%,但在这种模式下不起作用。示例:一列具有以下值:5%off、50%off。以下查询在标准模式下有效,但在NO_BACKSLASH_ESCAPES模式下无效:SELECT*FROMmytableWHEREmycolLIKE'5\%off' 最佳答案 你需要逃跑select*frommytablewheremycollike'5\%off'escape'\';对于无论NO_BACKSLASH_ESCAP

mysql - 启用 NO_BACKSLASH_ESCAPES 选项时如何转义文字百分号?

我的公司在NO_BACKSLASH_ESCAPES模式下运行MySQL。在这种模式下,如何在LIKE查询中转义文字%或_?标准方式是\%,但在这种模式下不起作用。示例:一列具有以下值:5%off、50%off。以下查询在标准模式下有效,但在NO_BACKSLASH_ESCAPES模式下无效:SELECT*FROMmytableWHEREmycolLIKE'5\%off' 最佳答案 你需要逃跑select*frommytablewheremycollike'5\%off'escape'\';对于无论NO_BACKSLASH_ESCAP

php - SQL Server 的 mysql_real_escape_string 替代方案

这个问题在这里已经有了答案:HowtoescapestringsinSQLServerusingPHP?(14个答案)关闭6年前。想知道在PHP中与SQLServer转义字符串的等效项是什么?

php - mysqli 准备语句和 mysqli_real_escape_string

这个问题在这里已经有了答案:Ismysql_real_escape_string()necessarywhenusingpreparedstatements?(1个回答)关闭12天前。我目前正在使用mysqliphp扩展。传统上我使用mysqli_real_escape_string来转义用户输入。不过,我正在考虑更改代码(希望步骤尽可能少)以使用准备好的语句。我想明确这一点-如果我使用准备好的语句来绑定(bind)我的所有变量,我可以确信sql注入(inject)是不可能的吗?(并完全放弃mysqli_real_escape_string?)谢谢

php - Htmlentities vs addslashes vs mysqli_real_escape_string

我一直在阅读有关保护PHP应用程序的一些资料,在我看来mysqli_real_escape_string是将数据插入MySQL表时使用的正确函数,因为addslashes对于聪明的攻击者来说,可能会导致一些奇怪的事情发生。对吧?但是,有一件事让我很困惑。我似乎记得被告知addslashes在将用户输入的数据回显给用户以保护他们的数据时比htmlentities更好,但它似乎像addslashes是有漏洞的那个。这是真的吗,还是我记错了? 最佳答案 它们是用于不同目的的不同工具。mysqli_real_escape_string使数据

php - fgetcsv/fputcsv $escape 参数从根本上被破坏

概览fgetcsv和fputcsv支持$escape参数,但是,它要么被破坏,要么我不理解它应该如何工作。忽略在fputcsv上没有看到$escape参数的事实,它在PHP源代码中受支持,有一个小错误阻止它在文档。该函数还支持$delimiter和$enclosure参数,分别默认为逗号和双引号。我希望应该传递$escape参数,以便有一个包含这些元字符(反斜杠、逗号或双引号)中的任何一个的字段,但事实并非如此。(我现在通过阅读Wikipedia了解到,这些要用双引号引起来)。我尝试过的以影响fgetcsv文档的评论部分中的许多张贴者的陷阱为例。我们想将单个反斜杠写入字段的情况。$r=

php - mysqli_real_escape_string 和准备好的语句?

应该是一个足够简单的问题:如果我正在使用mysqli预处理语句,我还需要使用mysqli_real_escape_string()吗?这是必要的还是一个好主意?谢谢,尼科 最佳答案 没有。如果您使用准备好的语句,转义会为您完成。 关于php-mysqli_real_escape_string和准备好的语句?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1162540/