Skip to content

Commit cbd6079

Browse files
committed
Add logging to DB HTTP request method, when "page not found" or access
denied.
1 parent 2b3e0b0 commit cbd6079

File tree

10 files changed

+84
-34
lines changed

10 files changed

+84
-34
lines changed

src/main/java/ru/mystamps/web/controller/ErrorController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,16 @@ public void notFound(
4848
@RequestHeader(value = "user-agent", required = false) String agent) {
4949

5050
// TODO: sanitize all user's values (#60)
51-
String page = (String)request.getAttribute("javax.servlet.error.request_uri");
52-
String ip = request.getRemoteAddr();
51+
String page = (String)request.getAttribute("javax.servlet.error.request_uri");
52+
String ip = request.getRemoteAddr();
53+
String method = request.getMethod();
5354

5455
User currentUser = null;
5556
if (userDetails != null) {
5657
currentUser = userDetails.getUser();
5758
}
5859

59-
siteService.logAboutAbsentPage(page, currentUser, ip, referer, agent);
60+
siteService.logAboutAbsentPage(page, method, currentUser, ip, referer, agent);
6061
}
6162

6263
@RequestMapping(Url.INTERNAL_ERROR_PAGE)

src/main/java/ru/mystamps/web/dao/impl/JdbcSuspiciousActivityDao.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public void add(SuspiciousActivity activity) {
4949
: null;
5050
params.put("user_id", userId);
5151
params.put("ip", activity.getIp());
52+
params.put("method", activity.getMethod());
5253
params.put("referer_page", activity.getRefererPage());
5354
params.put("user_agent", activity.getUserAgent());
5455

src/main/java/ru/mystamps/web/entity/SuspiciousActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class SuspiciousActivity {
3838

3939
public static final int PAGE_URL_LENGTH = 100;
4040
public static final int IP_LENGTH = 15;
41+
public static final int METHOD_LENGTH = 7;
4142

4243
@Id
4344
@GeneratedValue
@@ -51,6 +52,9 @@ public class SuspiciousActivity {
5152

5253
@Column(length = PAGE_URL_LENGTH, nullable = false)
5354
private String page;
55+
56+
@Column(length = METHOD_LENGTH)
57+
private String method;
5458

5559
@ManyToOne
5660
private User user;

src/main/java/ru/mystamps/web/service/SiteService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public interface SiteService {
2525
@SuppressWarnings("PMD.UseObjectForClearerAPI")
2626
void logAboutAbsentPage(
2727
String page,
28+
String method,
2829
User user,
2930
String ip,
3031
String referer,
@@ -33,6 +34,7 @@ void logAboutAbsentPage(
3334
@SuppressWarnings("PMD.UseObjectForClearerAPI")
3435
void logAboutFailedAuthentication(
3536
String page,
37+
String method,
3638
User user,
3739
String ip,
3840
String referer,

src/main/java/ru/mystamps/web/service/SiteServiceImpl.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,32 +48,35 @@ public class SiteServiceImpl implements SiteService {
4848
@Transactional
4949
public void logAboutAbsentPage(
5050
String page,
51+
String method,
5152
User user,
5253
String ip,
5354
String referer,
5455
String agent) {
5556

56-
logEvent(PAGE_NOT_FOUND, page, user, ip, referer, agent, new Date());
57+
logEvent(PAGE_NOT_FOUND, page, method, user, ip, referer, agent, new Date());
5758
}
5859

5960
@Override
6061
@SuppressWarnings("PMD.UseObjectForClearerAPI")
6162
@Transactional
6263
public void logAboutFailedAuthentication(
6364
String page,
65+
String method,
6466
User user,
6567
String ip,
6668
String referer,
6769
String agent,
6870
Date date) {
6971

70-
logEvent(AUTHENTICATION_FAILED, page, user, ip, referer, agent, date);
72+
logEvent(AUTHENTICATION_FAILED, page, method, user, ip, referer, agent, date);
7173
}
7274

73-
@SuppressWarnings("PMD.UseObjectForClearerAPI")
75+
@SuppressWarnings({"PMD.UseObjectForClearerAPI", "checkstyle:parameternumber"})
7476
private void logEvent(
7577
String type,
7678
String page,
79+
String method,
7780
User user,
7881
String ip,
7982
String referer,
@@ -92,6 +95,7 @@ private void logEvent(
9295

9396
activity.setOccurredAt(date == null ? new Date() : date);
9497
activity.setPage(page);
98+
activity.setMethod(method);
9599

96100
activity.setUser(user);
97101

src/main/java/ru/mystamps/web/support/spring/security/AuthenticationFailureListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,14 @@ public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent event) {
5050

5151
// TODO: log more info (login for example) (#59)
5252
// TODO: sanitize all user's values (#60)
53+
String method = request.getMethod();
5354
String page = request.getRequestURI();
5455
String ip = request.getRemoteAddr();
5556
String referer = request.getHeader("referer");
5657
String agent = request.getHeader("user-agent");
5758
Date date = new Date(event.getTimestamp());
5859

59-
siteService.logAboutFailedAuthentication(page, null, ip, referer, agent, date);
60+
siteService.logAboutFailedAuthentication(page, method, null, ip, referer, agent, date);
6061
}
6162

6263
private HttpServletRequest getRequest() {

src/main/resources/liquibase/version/0.4.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
<include file="0.4/2014-10-28--decimal_price.xml" relativeToChangelogFile="true" />
99
<include file="0.4/2015-06-22--image_url.xml" relativeToChangelogFile="true" />
1010
<include file="0.4/2015-07-07--salt_and_hash.xml" relativeToChangelogFile="true" />
11+
<include file="0.4/2015-10-14--http-method.xml" relativeToChangelogFile="true" />
1112

1213
</databaseChangeLog>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<databaseChangeLog
3+
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
6+
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">
7+
8+
<changeSet id="add-method-column-to-suspicious_activities-table" author="AleksSPb" context="scheme">
9+
<comment>Add method column to suspicious_activities table</comment>
10+
11+
<addColumn tableName="suspicious_activities">
12+
<!-- Field size set to fit the longest name of HTTP method ("OPTIONS") -->
13+
<column name="method" type="VARCHAR(7)" />
14+
</addColumn>
15+
16+
</changeSet>
17+
18+
</databaseChangeLog>

src/main/resources/sql/suspicious_activity_dao_queries.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ INSERT \
44
( type_id \
55
, occurred_at \
66
, page \
7+
, method \
78
, user_id \
89
, ip \
910
, referer_page \
@@ -12,6 +13,7 @@ INSERT \
1213
SELECT sat.id \
1314
, :occurred_at \
1415
, :page \
16+
, :method \
1517
, :user_id \
1618
, :ip \
1719
, :referer_page \

0 commit comments

Comments
 (0)