Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Apache:将存储记录到MySQL中 方法1:管道测井_Mysql_Apache_Logging_Sql Injection - Fatal编程技术网

Apache:将存储记录到MySQL中 方法1:管道测井

Apache:将存储记录到MySQL中 方法1:管道测井,mysql,apache,logging,sql-injection,Mysql,Apache,Logging,Sql Injection,最近我读了一篇关于。简单地说,我们的想法是通过管道将每个日志传输到MySQL: # Format log as a MySQL query LogFormat "INSERT INTO apache_logs \ set ip='%h',\ datetime='%{%Y-%m-%d %H:%M:%S}t',\ status='%>s',\ bytes_sent='%B',\ content_type='%{Content-Type}o',\ url_requested='%r',\ use

最近我读了一篇关于。简单地说,我们的想法是通过管道将每个日志传输到MySQL:

# Format log as a MySQL query
LogFormat "INSERT INTO apache_logs \
set ip='%h',\
datetime='%{%Y-%m-%d %H:%M:%S}t',\
status='%>s',\
bytes_sent='%B',\
content_type='%{Content-Type}o',\
url_requested='%r',\
user_agent='%{User-Agent}i',\
referer='%{Referer}i';" \
mysql_custom_log

# execute queries
CustomLog "|/usr/bin/mysql -h 127.0.0.1 -u log_user -plog_pass apache_logs" mysql_custom_log

# save queries to log file
CustomLog logs/mysql_custom_log mysql_custom_log
问题:

似乎未经处理的用户输入(即:user\u agent和referer)将直接传递给MySQL。 因此,此方法易受SQL注入攻击吗?如果是这样,是否有可能使其变硬

方法2:Apache模块 是一个Apache模块,它似乎执行类似的操作,即:将所有请求记录到数据库。根据文件,该模块有几个优点:

基于SQL的日志数据提取功能 比标准模块[mod_log_config]更具可配置性和灵活性 查询之间的链接保持活动状态,以节省速度和开销 任何失败的插入命令都会保留到本地文件中 不再执行日志旋转之类的任务 无需整理/交错许多单独的日志文件 然而,尽管有这些优点,mod_log_sql似乎并不流行:

文档中没有提到一个生产级用户 网上讨论很少 几个时期没有维修人员 这听起来像是对我的警告,尽管我可能错了

问题

这个模块不受欢迎的原因是什么? 它易受SQL注入攻击吗?如果是这样,是否有可能使其变硬? 哪种方法应该有更好的性能? 管道日志方法更好,因为它在日志和数据库之间创建了一个流,这可以直接反映插入/搜索的时间性能。关于管道日志的另一点是使用NoSQL数据库的可能性,该数据库可以通过特定的查询进行搜索或插入,例如ELK Stack、Elasticsearch+LogstashLog Parser+Stream和Kibana

将推荐与以下内容相关的任何阅读:

与您关于SQL注入的问题相关,它取决于您如何与数据库通信,而不管存储日志的数据库类型或方法如何。您需要以令牌为例来保护它


与apache模块相关,其目的是制作管道日志,但最后一个注释部分是2006年的,文档对用户不友好。

关于管道日志的另一点是在两种方法中使用NoSQL数据库,它将使用MySQL,而不是NoSQL…我已经编辑过,添加了“可能性”一词,因为它可以通过两种方式实现。MySQL也不是一个好的选择,例如ELK堆栈、Elasticsearch+LogstashLog解析器+Stream和Kibana。我不会放弃进入集中式日志系统的可能性。然而,首先我想从我已经熟悉的ie中得到尽可能多的信息:LAMP。它取决于您与数据库的通信方式,至少在方法1中,通信是非常直接的,即插入查询而不处理用户输入。现在是注射安全的,是否可以将用户代理设置为“;是否删除表mysql\u自定义\u日志?