gpt4 book ai didi

php - PHP Mysql CodeIgniter在非常奇怪的情况下将字符转换为符号

转载 作者:行者123 更新时间:2023-11-29 03:52:20 25 4
gpt4 key购买 nike

PHP Mysql CodeIgniter在非常奇怪的情况下将字符转换为符号
应用程序建立在CodeIgniter上。
已经跑了一年多了。没问题。
客户填写关于客户的表格。
一个简单的trim($_POST['notes'])捕获文本区域表单字段文本并保存到MySQL
PHP或JavaScript中未报告错误
前几天我注意到客户输入的一些文本,将文本中的括号“(”替换为等效的“(&#41”;
我想……”真奇怪。。。我不记得为什么这些字符会被替换成那样
我看看。。。一天后。。。以下是我的疯狂揭示:
有关文本一字不差”
始终使用信用卡存档(我们不向该客户收取取货或退货的费用)
"
无论我在代码方面做了什么或做了什么更改。。我无法阻止PHP。。。或者Javascript。。。或者MySQL。。。或者外星人。。。-或者不管是谁做的-从文本中的“(”)转换为“()。我尝试了很多事情,比如用人类或上帝所知道的所有方式来清理绳子。在保存到数据库之前捕获发送前的字符串。转换总是在保存到MySQL之前进行。我试着用不同的表格和字段发帖。。。每次都一样。。。无法停止到“()”的魔术转换;。
以蝙蝠侠的名义出现在这段神奇的文字中是什么导致了这一切的发生?是魔精灵的灰尘洒到GoDoD服务器上吗??? 0欧
.......
作为一个天才,我决定一次删除一个单词。
神奇地。。。当森林里所有的生物都聚集在一起时——我终于找到了段落中的“文件”一词,并把它移走了!!! 就像魔法一样,“(”)保持为“(”,并且不转换为“()”;?!?!???!?!? :为什么??我只是从文本中删除了“文件”一词。。。这怎么能改变什么?“文件”这个词是什么引起了字符串保存或转换方式的改变??
好的-所以我在应用程序中的所有表单字段上测试了这个。每次,在任何字段中,如果键入单词“file”后跟“(”它将把第一个“(”转换为“(;下一个“)”转换为“&#41”;
所以。。如果字符串是:
“文件(任意字符数或文本)任何其他文本或字符”
在岗位上,它将神秘地转换为:
“文件(任意数量的字符或文本&#41任何其他文本或字符”
从字符串中删除单词“file”,您将得到:
“(任意字符数或文本)任何其他文本或字符”
外星生物把被绑架的人还了回来
有人知道这到底是怎么回事吗?
这是什么原因?
“文件”这个词是不是一个会破坏某种安全措施的关键字?将其解释为“file()”???
我不知道:\
这是我见过的最奇怪的事。。。除了那次我和爸爸妈妈走了进来
任何帮助都将不胜感激,我一定会给你买瓶啤酒:)
头很大的人,在斯塔克,没有人把这个问题当作“离题”来暂停。。。老实说,这些家伙真傻。
所以,为了安抚盖世太保的情绪,我将尝试编辑这个问题,使之关于主题“??? 0欧。。。为你做任何事哦,所以“国王”堆栈家伙O-太可惜了,你永远不会有任何机会注意到这样一个错误。。。也许有一天。;)
示例代码:

    <textarea name="notes">Always run credit card on file (we do not charge this customer for pick-up or return) blah blah</textarea>

<?php

if(isset($_POST['notes']){


$this->db->where("ID = ".$_POST['ID']);
$this->db->update('OWNER', $_POST['notes']);

}
?>

生成的MySQL存储:
“始终在档案中使用信用卡 &#40;我们不向该客户收取取货或退货的费用 &#41;blah blah”
InnoDB-键入文本utf8_general_ci
我不是在寻找一种方法来阻止它,或者清洁它。。。我显然在问“是什么导致的”

最佳答案

/*
* Sanitize naughty scripting elements
*
* Similar to above, only instead of looking for
* tags it looks for PHP and JavaScript commands
* that are disallowed. Rather than removing the
* code, it simply converts the parenthesis to entities
* rendering the code un-executable.
*
* For example: eval('some code')
* Becomes: eval&#40;'some code'&#41;
*/
$str = preg_replace('#(alert|cmd|passthru|eval|exec|expression|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(\s*)\((.*?)\)#si', "\\1\\2&#40;\\3&#41;", $str);

这是XSS Clean的一部分。(system/core/Security.php)
如果希望过滤器每次遇到POST或COOKIE数据时都自动运行,可以通过打开application/config/config.php文件并设置以下内容来启用它:
$config['global_xss_filtering']=真;
https://www.codeigniter.com/user_guide/libraries/security.html

关于php - PHP Mysql CodeIgniter在非常奇怪的情况下将字符转换为符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20758130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com