ano.nym
gesperrt
- Registriert
- 31 März 2020
- Beiträge
- 206
Hallo liebe Userinnen und User,
nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.
Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.
Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.
Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.
Speichert der Webserver IP-Adressen?
Nein.
TypeError: block is undefinedcrypto-js.js:3668:18
xorBlock https://cryptnote.ch/js/crypto-js/crypto-js.js:3668
processBlock https://cryptnote.ch/js/crypto-js/crypto-js.js:3611
_doProcessBlock https://cryptnote.ch/js/crypto-js/crypto-js.js:3783
_process https://cryptnote.ch/js/crypto-js/crypto-js.js:622
_doFinalize https://cryptnote.ch/js/crypto-js/crypto-js.js:3798
finalize https://cryptnote.ch/js/crypto-js/crypto-js.js:3460
encrypt https://cryptnote.ch/js/crypto-js/crypto-js.js:3982
encrypt https://cryptnote.ch/js/crypto-js/crypto-js.js:3498
<anonym> https://cryptnote.ch/js/script.js:28
message = message.replace(/(?:\r\n|\r|\n)/g, "<br>");
function clock() {
submitBtn.disabled = "disabled";
var myTimer = setInterval(myClock, 1000);
var c = 10;
++c;
function myClock() {
submitBtn.value = --c;
if (c == 0) {
clearInterval(myTimer);
submitBtn.value = "Verschlüsseln & Link abrufen";
submitBtn.removeAttribute("disabled");
document.getElementById("input1").value = "";
}
}
}
<div class="trustpilot-widget" data-locale="de-DE" data-template-id="56278e9abfbbba0bdcd568bc" data-businessunit-id="5e91a72bd83fbe00011c3b87" data-style-height="52px" data-style-width="100%">
<!--
<div id="advertise">
<script type="text/javascript">
atOptions = {
'key' : '8872e87e2b5edb7cff867182daae804a',
'format' : 'iframe',
'height' : 90,
'width' : 728,
'params' : {}
};
document.write('<scr' + 'ipt type="text/javascript" src="http' + (location.protocol === 'https:' ? 's' : '') + '://www.hiprofitnetworks.com/8872e87e2b5edb7cff867182daae804a/invoke.js"></scr' + 'ipt>');
</script>
</div>
<div id="advertise2">
<script type="text/javascript">
atOptions = {
'key' : '894a622dc1504548d28b10e8da38a9a2',
'format' : 'iframe',
'height' : 60,
'width' : 468,
'params' : {}
};
document.write('<scr' + 'ipt type="text/javascript" src="http' + (location.protocol === 'https:' ? 's' : '') + '://www.hiprofitnetworks.com/894a622dc1504548d28b10e8da38a9a2/invoke.js"></scr' + 'ipt>');
</script>
</div>
Fazit, 15 Minuten drüber gucken: Refactor and migration to server needed, bevor das auch nur irgendwer für irgendwas anfässt, wofür man solch einen Service nutzen würde.
Du hast den Quellcode vergessen. Den Quellcode benötigt man für ein eingehendes Whitebox-Audit ja auch.
Feedback, gerne.
1) Trustpilot? Wat????
Ok, ich machs mal raus. Danke.
2) Du benutzt crypto.getRandomValues() für einen AES-Key, was auch in den Usage-Notes der Funktion als unsicher dargestellt wird. Dafür lieber die SubtleCrypto.generateKey(), weil es garantiert in einem sicheren Kontext läuft.
Nein, ich benutze mittlerweile das hier:
[src=javascript]
let password = Math.random().toString(36).substr(2, 8);
let salt = CryptoJS.lib.WordArray.random(128 / 8);
let key = CryptoJS.PBKDF2(password, salt, {
keySize: 256 / 32
});
var encrypted = CryptoJS.AES.encrypt(message, key.toString());
[/src]
3) Wieso alternierst Du zwischen getRandomValues und randomBytes? Im Vergleich, randomBytes ist geeignet als getRandomValues() für AES-Keys, weil es prinzipiell nur ein Wrapper um OpenSSLs RAND()-Funktion ist, und garantiert im sicheren Kontext läuft
Benutze ich ja nicht mehr.
4) Wieso ist "CryptoJS" in der selben JS-File wie dein Code? Spricht eher für schlechte Modularaisierung
Es befindet sich nicht in der selben Datei, vielleicht hast du eine alte Version der JavaScript Datei in deinem Cache?
5) "CryptoJS" ist unnötig, wieso benutzt Du nicht die Browser-Eigenen Funktionen für AES/DES/Random-Values?
Weil CryptoJS viel komfortabler ist. Ich benutze ein Fork von CryptoJS, der up to date gehalten wird.
6) Du hast keine Ahnung ob Nitrado IPs speichert? Toll. Besorg Dir nen *eigenen* Server, wenn Du willst das Leute dein Zeug benutzen
Danke, das wäre eine Überlegung wert, kostet halt nur das 3 bis 4-fache. Momentan sind die Kosten ziemlich überschaubar.
7) Du vergisst bei manchen URLs mit PHP das Escaping
Wo?
8) Wieso kriegen wir die Source vom Servercode nicht? Angst, das Leute dich "beklauen"? Wieso dürfen wir uns kein eigenes Bild davon machen, was Du dort tust, wo es doch wirklich recht trivial ist, vom Aufwand her?
Natürlich ist es kein großer Aufwand ein ähnliches Projekt zu starten, aber ich möchte die Mechanismen nicht offen legen. Aus Sicherheitsgründen und weil viele mit dem Code sowieso nichts anfangen können, die meisten User meines Projekts kennen sich mit PHP nicht aus.
9) Wieso benutzt Du Ajax? Vollkommen unnötig in dem Fall hier, weil Du damit effektiv Leute ausschließt, die kein JS ausführen lassen wollten, und daher folgt dann auch...
Da gebe ich dir recht, vorallem wenn Leute den Torbrowser benutzen mit NoScript. Da es aber hübscher ist mit JavaScript zu arbeiten, behalte ich das bei. Außerdem möchte ich eine Animation einblenden, wenn der AJAX request ausgeführt wird. Das kommt noch.
10).... Javascript-Vorraussetzungen für XHR
Mein PHP Skript handelt das gut und es sollten auch keine Probleme auftreten.
11)Wieso machst Du das Clientside? Das ist absolut sinnfrei.Code:message = message.replace(/(?:\r\n|\r|\n)/g, "<br>");
Denk mal ein bisschen über diese Aussage nach, warum mache ich es wohl client-seitig?
12)Bevor man eine weitere Nachricht abschicken kann, soll man 10 Sekunden warten. Damit nicht gespammt wird. Serverseitig sind 10 Nachrichten innerhalb von 10 Minuten erlaubt.Code:function clock() { submitBtn.disabled = "disabled"; var myTimer = setInterval(myClock, 1000); var c = 10; ++c; function myClock() { submitBtn.value = --c; if (c == 0) { clearInterval(myTimer); submitBtn.value = "Verschlüsseln & Link abrufen"; submitBtn.removeAttribute("disabled"); document.getElementById("input1").value = ""; } } }
13) Nochmal, trustpilot????lol...Code:<div class="trustpilot-widget" data-locale="de-DE" data-template-id="56278e9abfbbba0bdcd568bc" data-businessunit-id="5e91a72bd83fbe00011c3b87" data-style-height="52px" data-style-width="100%">
Ja, wird entfernt.
14)Na danke. Sehr freundlich...Code:<!-- <div id="advertise"> <script type="text/javascript"> atOptions = { 'key' : '8872e87e2b5edb7cff867182daae804a', 'format' : 'iframe', 'height' : 90, 'width' : 728, 'params' : {} }; document.write('<scr' + 'ipt type="text/javascript" src="http' + (location.protocol === 'https:' ? 's' : '') + '://www.hiprofitnetworks.com/8872e87e2b5edb7cff867182daae804a/invoke.js"></scr' + 'ipt>'); </script> </div> <div id="advertise2"> <script type="text/javascript"> atOptions = { 'key' : '894a622dc1504548d28b10e8da38a9a2', 'format' : 'iframe', 'height' : 60, 'width' : 468, 'params' : {} }; document.write('<scr' + 'ipt type="text/javascript" src="http' + (location.protocol === 'https:' ? 's' : '') + '://www.hiprofitnetworks.com/894a622dc1504548d28b10e8da38a9a2/invoke.js"></scr' + 'ipt>'); </script> </div>
Die Werbung ist auskommentiert.
Fazit, 15 Minuten drüber gucken: Refactor and migration to server needed, bevor das auch nur irgendwer für irgendwas anfässt, wofür man solch einen Service nutzen würde.
Welchen nutzt du denn? Du hast ja passenderweise den Header entfernt.Weil CryptoJS viel komfortabler ist. Ich benutze ein Fork von CryptoJS, der up to date gehalten wird.
Du hast bei uns im Chat noch mit deinem Gehaltszettel gewedelt, die 10€/Monat kannste doch gerade noch ausgeben, oder? Tankst du halt einmal weniger deinen 5er BMW voll.Danke, das wäre eine Überlegung wert, kostet halt nur das 3 bis 4-fache. Momentan sind die Kosten ziemlich überschaubar.
Schwer zu sagen, du legst deinen Code nicht offen. Kleiner Tipp: User Input ist böse.
Security by obscurity ist bei sowas aber echt bescheuert. Alle relevanten Projekte mit Fokus auf Sicherheit erlauben Audits.ich möchte die Mechanismen nicht offen legen. Aus Sicherheitsgründen
Bevor du deinen Startpost editiert hast, wolltest du noch, dass wir das pentesten bzw bewerten? Angst, wir würden rausfinden, dass du alles nur copy&pasted hast?weil viele mit dem Code sowieso nichts anfangen können, die meisten User meines Projekts kennen sich mit PHP nicht aus.
Kennst du CSS-Animationen? Warum nutzt du sie nicht? Ist die Dokumentation zu schwer für dich zu lesen?Da gebe ich dir recht, vorallem wenn Leute den Torbrowser benutzen mit NoScript. Da es aber hübscher ist mit JavaScript zu arbeiten, behalte ich das bei. Außerdem möchte ich eine Animation einblenden, wenn der AJAX request ausgeführt wird. Das kommt noch.
Erklär uns das doch mal. Oder kannst du es nicht?Denk mal ein bisschen über diese Aussage nach, warum mache ich es wohl client-seitig?
Und, was ist sein "Level"?Ich kann dein Level jetzt ungefähr einschätzen, danke für das Feedback.