Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 直接在定位内使用数据库列名_Php_Sql_Security_Anchor - Fatal编程技术网

Php 直接在定位内使用数据库列名

Php 直接在定位内使用数据库列名,php,sql,security,anchor,Php,Sql,Security,Anchor,我有一个简单的安全问题,我就是找不到答案 基本上,我想在某一列之后订购一个表。我这样做的方式是使用带有两个额外段的锚。目前,我在一个片段中使用了实际的列名,我想订购的列,但在这里我开始思考 是这样处理的吗?在我看来,让人们访问我的一个表中的一些列名确实是一个巨大的安全风险。但另一方面,我当然会逃避一切,这样他们就不会有机会做任何事情。不幸的是,我不是万能的,所以我可能会做错什么,我又回到了安全风险中;) 那我该怎么做呢?我是否应该使用其他类型的名称,如数字,稍后将其转换回列名。还是我的方式好 哦

我有一个简单的安全问题,我就是找不到答案

基本上,我想在某一列之后订购一个表。我这样做的方式是使用带有两个额外段的锚。目前,我在一个片段中使用了实际的列名,我想订购的列,但在这里我开始思考

是这样处理的吗?在我看来,让人们访问我的一个表中的一些列名确实是一个巨大的安全风险。但另一方面,我当然会逃避一切,这样他们就不会有机会做任何事情。不幸的是,我不是万能的,所以我可能会做错什么,我又回到了安全风险中;)

那我该怎么做呢?我是否应该使用其他类型的名称,如数字,稍后将其转换回列名。还是我的方式好


哦,忘了说,我正在用php和codeigniter一起工作

您可以使用白名单:在PHP中创建一个哈希,将ancor列名映射到数据库列名:

$mapping = array('col_a' => 'firstname', 'col_b' => 'lastname');

您也可以使用完全相同的名称,例如,“firstname”映射到“firstname”。然后使用ancor列名从映射哈希中获取数据库列名。如果ancor列名没有条目,则返回错误。这样,用户的输入就被验证了。

模糊性带来的安全性不是安全性


很多网站都使用开源php应用程序,这些应用程序的数据库表和列都是已知的。我不记得这在攻击网站时是多么有用。如果您有SQL注入问题,您不应该关心用户了解表结构这一事实,最好删除SQL注入点。

我不是安全专家,但在此之后,您应该知道。希望你不是这样做的,
update bobby\u table set$COLUMN\u NAME=null
——如果从UI注入
email\u id
,可能会破坏你的数据。这其实不是一个清理数据的问题,而是如何处理我的列名。不过还是谢谢你!这是一个很好的解决方案,尽管我更想找到一个答案,告诉用户我在数据库中使用的名称是否合适。无论如何,非常感谢!我会用这个!啊,这就是我一直在寻找并希望得到的答案!非常感谢!