Skip to content

Commit ba5bbcd

Browse files
authored
Merge pull request #232 from Kunal-Deshpande/StrictHTTP
Added StrictHTTP
2 parents 5b69297 + b0221f3 commit ba5bbcd

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

src/Platform_Core/org/lobobrowser/security/PermissionSystem.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ public boolean isRequestPermitted(final Request request) {
7474
}
7575
}
7676

77+
public boolean isHTTPPermitted(final Request request) {
78+
return getLastBoard().isHTTPPermitted(request);
79+
}
80+
7781
public List<PermissionBoard> getBoards() {
7882
return boards;
7983
}
@@ -139,6 +143,12 @@ public boolean isRequestPermitted(final Request request) {
139143
return row.isRequestPermitted(request);
140144
}
141145

146+
public boolean isHTTPPermitted(final Request request) {
147+
final String requestHost = request.url.getHost().toLowerCase();
148+
final PermissionRow row = getRow(requestHost);
149+
return row.isHTTPPermitted(request);
150+
}
151+
142152
public void dump() {
143153
System.out.print(String.format("\n%30s", "all"));
144154
headerRowOpt.ifPresent(r -> r.dump());
@@ -212,6 +222,15 @@ public PermissionResult getPermission(final Request request) {
212222
return requestCells[requestOrdinal].getEffectivePermission();
213223
}
214224

225+
public boolean isHTTPPermitted(final Request request) {
226+
return getHTTPPermission(request).permission == Permission.Allow;
227+
}
228+
229+
public PermissionResult getHTTPPermission(final Request request) {
230+
final int requestOrdinal = RequestKind.HTTP.ordinal();
231+
return requestCells[requestOrdinal].getEffectivePermission();
232+
}
233+
215234
public void dump() {
216235
Arrays.stream(requestCells).forEach(c -> {
217236
final PermissionResult permissionResult = c.getEffectivePermission();

src/Platform_Core/org/lobobrowser/security/RequestManager.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,19 @@ public final class RequestManager {
4242

4343
private final NavigatorFrame frame;
4444

45+
4546
public RequestManager(final NavigatorFrame frame) {
4647
this.frame = frame;
4748
}
4849

4950
private static class RequestCounters {
5051
private final int counters[] = new int[UserAgentContext.RequestKind.values().length];
5152

52-
public void updateCounts(final RequestKind kind) {
53-
counters[kind.ordinal()]++;
53+
public void updateCounts(final Request request) {
54+
counters[request.kind.ordinal()]++;
55+
if (request.url.getProtocol().equals("http")) {
56+
counters[UserAgentContext.RequestKind.HTTP.ordinal()]++;
57+
}
5458
}
5559

5660
@Override
@@ -67,7 +71,7 @@ public String toString() {
6771
private synchronized void updateCounter(final Request request) {
6872
final String host = request.url.getHost().toLowerCase();
6973
ensureHostInCounter(host);
70-
hostToCounterMap.get(host).updateCounts(request.kind);
74+
hostToCounterMap.get(host).updateCounts(request);
7175
}
7276

7377
private void ensureHostInCounter(final String host) {
@@ -106,11 +110,23 @@ private Request rewriteRequest(final Request request) {
106110
}
107111

108112
public boolean isRequestPermitted(final Request request) {
113+
109114
final Request finalRequest = rewriteRequest(request);
110115

111116
if (permissionSystemOpt.isPresent()) {
112117
final Boolean permitted = permissionSystemOpt.map(p -> p.isRequestPermitted(finalRequest)).orElse(false);
113118
updateCounter(finalRequest);
119+
if (permitted) {
120+
boolean selectHTTP = permissionSystemOpt.get().isHTTPPermitted(finalRequest);
121+
String protocolTest = request.url.getProtocol();
122+
String frameProtocol = getFrameURL().get().getProtocol();
123+
124+
if (protocolTest.equals("http") && frameProtocol.equals("https") && !selectHTTP) {
125+
System.out.println("Denied " + request);
126+
return false;
127+
}
128+
}
129+
114130
// dumpCounters();
115131
return permitted;
116132
} else {

src/Platform_Public_API/org/lobobrowser/ua/UserAgentContext.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
*/
1515
public interface UserAgentContext {
1616
public enum RequestKind {
17-
Image("Img"), CSS("CSS"), Cookie("Cookie"), JavaScript("JS"), Frame("Frame"), XHR("XHR"), Referrer("Referrer");
17+
Image("Img"), CSS("CSS"), Cookie("Cookie"), JavaScript("JS"), Frame("Frame"), XHR("XHR"), Referrer(
18+
"Referrer"), HTTP("HTTP Request");
1819

1920
public final String shortName;
2021

0 commit comments

Comments
 (0)